首頁 後端開發 php教程 try catch throw php收集

try catch throw php收集

Jun 13, 2016 pm 01:04 PM
catch delete throw try

try catch throw php搜集

我个人的理解是:?
1。在private或者protected的成员函数不使用try,catch,而只使用throw?
2。如果在private或者protected的成员函数需要使用try,catch,那么就要使用rethrow?
3。在public成员函数里使用try,catch?
4。如果该类相对于整个项目来说是属于被调用层,那么public成员函数也可以不使用try,catch?
5。如果调用第三方的代码,我一般都会用try,catch?
class CTest1;?
class CTest2;?
class CTest3;?

void BadCode()?
{?
? //define?
? CTest1 * pTest1 = NULL;?
? CTest2 * pTest2 = NULL;?
? CTest3 * pTest3 = NULL;?

? //使用try, catch, throw?
? try?
? {?
? ? //new test1?
? ? pTest1 = new CTest1;?

? ? //do something?
? ? bool bRet = DoSomething();?
? ? if (!bRet)?
? ? ? throw -1;?

? ? //new CTest2?
? ? pTest2 = new CTest2;?

? ? //do something?
? ? bRet = DoSomething();?
? ? if (!bRet)?
? ? ? throw -2;?

? ? //new CTest3?
? ? pTest3 = new CTest3;?

? ? bRet = DoSomething();?
? ? //do something?
? ? if (!bRet)?
? ? ? throw -3;?

? ? //release?
? ? delete pTest1;?
? ? pTest1 = NULL;?
? ? delete pTest2;?
? ? pTest2 = NULL;?
? ? delete pTest3;?
? ? pTest3 = NULL;?
? }?
? catch(...)?
? {?
? ? if (pTest1)?
? ? ? delete pTest1;?
? ? if (pTest2)?
? ? ? delete pTest2;?
? ? if (pTest3)?
? ? ? delete pTest3;?
? }?
}

//-----------------------------------------------------------------------

<div style="line-height: 22px;">
<span style="line-height: 22px; color: #0000ff;">try</span><span style="line-height: 22px; color: #000000;"><br style="line-height: 22px;">{<br style="line-height: 22px;">..........<br style="line-height: 22px;">.........<br style="line-height: 22px;"></span><span style="line-height: 22px; color: #008000;">//</span><span style="line-height: 22px; color: #008000;">throw</span><span style="line-height: 22px; color: #008000;"><br style="line-height: 22px;"></span><span style="line-height: 22px; color: #000000;">}<br style="line-height: 22px;"></span><span style="line-height: 22px; color: #0000ff;">catch</span><span style="line-height: 22px; color: #000000;"> (</span><span style="line-height: 22px; color: #0000ff;">int</span><span style="line-height: 22px; color: #000000;"> x)<br style="line-height: 22px;">{<br style="line-height: 22px;">.......<br style="line-height: 22px;">}</span>


<dt style="line-height: 22px;">(1)如果在try中没有throw抛出异常 是不是catch 就捕获不到异常啦? throw不可能莫名其妙抛出异常吧 总要判断下吧!<br style="line-height: 22px;">比如if(..)的 这样的话 要这些try catch干什么?多此一举? 直接if语句后面写就的啦!<br style="line-height: 22px;">(2)如果try中没有throw, 哪么catch 会捕获到异常吗?怎么捕获的?这一点很不明白! 如果try中发生异常 哪么到底谁通知catch呢?<br style="line-height: 22px;">(3) throw到底能干什么?</dt>
<dd style="line-height: 22px;">. 如果try里面调用了某个库函数,那个函数throw了异常,就会在这里被catch。这种情况自己就没法判断</dd>
<dt style="line-height: 22px;">throw产生一个异常,这个异常会顺着函数调用的级别逐级向上,由最接近的一个catch来处理。如果一直没有catch,最后就被操作系统捕捉到</dt>
<dd style="line-height: 22px;">1.首先,有的异常的是否抛出不是程序员能控制的,比如内存耗尽,所以需要try...catch,另外,有的时候需要通过抛出异常在程序的其他地方进行 处理,因为当前上下文缺少处理该异常的信息,所以程序员可以自定义异常,并在某种情况下抛出该异常,外层代码需要try...catch来捕获该异常<br style="line-height: 22px;">2.try块里的代码可能没有显示抛出异常,但里面调用的函数有可能抛出异常;怎么捕获的就涉及到异常处理系统的实现,具体的还是由牛人们来解答吧<br style="line-height: 22px;">3.throw就是抛出指定的异常,该异常可以在程序的其他地方被捕获并处理,当然也可能始终没有被捕获,此时,程序一般立刻终止,退出</dd>
<dt style="line-height: 22px;">试想,你写的一个方法method()给别人调用,你知道那个方法执行可能会出错,当出错的时候,你需要把错误信息返回给调用者。这时候,你就只能用throw抛出错误。调用者把对method()的调用放在try块里,就能catch到你抛出的错误,从而获得错误信息。</dt>
<dd style="line-height: 22px;">(1)<br style="line-height: 22px;">???<br style="line-height: 22px;">try的代码段假如没有抛出异常(可能是调用的函数抛出异常),catch确实捕获不到异常;用try catch而不用if能够很快的跳出深层嵌套啊。能够让代码更清晰。<br style="line-height: 22px;"><br style="line-height: 22px;"><br style="line-height: 22px;">(2)<br style="line-height: 22px;"><br style="line-height: 22px;">1里提到了可以捕获深层异常,假如调用的函数中抛出了异常,c++会沿调用链向上回溯(不是通过return回溯),找到第一个try块,<br style="line-height: 22px;">然 后找到对应的catch,假如该异常能被catch处理(类型匹配,其中...处理所有异常),则catch块处理该异常,然后按正常程序继续走下去,回 到正常的函数调用返回链。假如一直找不到一个try,catch块,就会调用C++的“未处理异常捕获器”,这个函数指针是可以设置的,他的默认行为是终 止程序。<br style="line-height: 22px;"><br style="line-height: 22px;">(3) throw的用处是抛出异常,正常的返回用return,而异常用throw。这样程序可以集中处理返回值(这里的返回值不同于C,每个返回值都是正确的,只是含义不同,而C的返回值可能代表着错误),而错误集中在catch块处理,代码逻辑会更清晰明了</dd>

 <div class="clear">
                 
              
              
        
            </div>
</div>
登入後複製

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1318
25
PHP教程
1268
29
C# 教程
1248
24
鍵盤刪除鍵是哪個 鍵盤刪除鍵是哪個 Mar 16, 2023 pm 04:48 PM

鍵盤刪除鍵有兩個:del(delete)鍵和backspace鍵。 backspace又稱退格鍵,這個按鍵可以把遊標前面的文字內容刪除掉;而delete鍵可以刪除字元、檔案和選取物件。每按一次del鍵,就會刪除遊標右側的一個字符,遊標右側的字符向左移動一幀;當選中一個或多個文件/資料夾時,按Del鍵可快速刪除;在某些應用程式中選取某個對象,按Del鍵可快速刪除選取對象。

delete鍵有什麼功能 delete鍵有什麼功能 Mar 10, 2023 pm 06:07 PM

delete鍵的功能為:1、刪除字符;每按一次delete鍵,就會刪除遊標右側的一個字符,遊標右側的字符向左移動一幀。 2、刪除檔案;選取一個或多個檔案/資料夾時,按Delete鍵快速刪除(移至回收站,可恢復)。 3.刪除選取對象;在某些應用程式中選取某個對象,按Delete鍵可快速刪除選取對象。

Java關鍵字throw、throws、Throwable怎麼用 Java關鍵字throw、throws、Throwable怎麼用 May 10, 2023 am 11:28 AM

throw,意為「投擲、拋、丟」。 Throw、Throws和Throwable三者都用於異常處理。 1.ThrowableThrowable在Java中是異常處理這個分支的頂級父類,其它所有異常處理的實作都依賴Throwable打開Java官方文件(Java8版本),找到Throwable,它的直接子類為Error和Exception。 Error和Exception兩者的特點在於Error異常程式無法處理,只能交由人工介入修改程式碼,例如堆疊溢出、堆疊溢出等等;而Exception異常可以提前發覺,並

如何控制 + Alt + 刪除:Mac 教學課程 如何控制 + Alt + 刪除:Mac 教學課程 Apr 16, 2023 pm 12:37 PM

Control+Alt+Delete:「Mac」方式Ctrlaltdel是Windows使用者用來開啟「工作管理員」的常用組合鍵。他們通常會從管理器選單中退出不需要的應用程序,以釋放電腦上的一些空間。 Control+Alt+DeleteMac變體可讓您開啟「強制退出」功能表。如果Mac用戶想要退出導致問題的程式或查看開啟的程序,他們可以與選單互動以進一步調查。如何在Mac上執行ControlAltDelete?如果您有任何故障的應用程序,您必須使用此組合鍵來擺

C++ 函式異常處理中的 throw 和 rethrow 語句的作用是什麼? C++ 函式異常處理中的 throw 和 rethrow 語句的作用是什麼? Apr 16, 2024 am 09:42 AM

異常處理中的throw語句用於拋出異常,rethrow語句用於在捕獲的異常中再次拋出相同的異常。 throw語句的語法為:throwexception_object;rethrow語句的語法為:rethrow;throw和rethrow語句僅在需要向呼叫者報告錯誤時使用,且異常資訊需清晰有用。

delete刪除的檔案可以恢復嗎 delete刪除的檔案可以恢復嗎 Feb 24, 2023 pm 03:49 PM

delete刪除的文件可以恢復;因為當使用者使用delete來刪除文件,會將這些文件移入回收站,並沒有完全刪除。恢復方法:1、開啟“回收站”,選取要恢復的文件,點擊“還原此項目”即可;2、開啟“回收站”,選取要復原的文件,使用撤銷捷徑“ctrl+z”即可。

java的throw和throws有什麼差別 java的throw和throws有什麼差別 May 03, 2023 pm 02:04 PM

1、throw是一種語句拋出異常,通常位於程式碼區塊內部,當程式出現某種邏輯錯誤時,程式設計師會主動拋出某種特定類型的異常程式猿,這是根據程式邏輯決定手動拋出哪種異常。 throws是一種方法,它可能會發出異常聲明。 publicvoidlist(){if(head.next==null){thrownewRuntimeException("目前鍊錶為空");}}2、方法函式頭出現throws,函式頭出現throw。 publicstaticvoidsparseToFile()throws

如何在jQuery中新增、編輯和刪除表格行? 如何在jQuery中新增、編輯和刪除表格行? Sep 05, 2023 pm 09:49 PM

在當今的Web開發時代,有效且有效率的表管理變得非常重要,特別是在處理資料量大的Web應用程式時。從表中動態新增、編輯和刪除行的能力可以顯著增強使用者體驗並使應用程式更具互動性。實現這一目標的一種有效方法是利用jQuery的強大功能。 jQuery提供了許多功能來幫助開發人員執行操作。表格行表格行是相互關聯的資料的集合,由HTML中的元素表示。它用於將表格中的單元格(由元素表示)分組在一起。每個元素用於定義表中的一行,對於多屬性表,通常包含一個或多個元素。語法$(selector).append(co

See all articles