9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
學(xué)習(xí)啦 > 知識大全 > 知識百科 > 百科知識 > 什么是異常處理異常處理的特點

什么是異常處理異常處理的特點

時間: 謝君787 分享

什么是異常處理異常處理的特點

  異常處理是編程語言或計算機(jī)硬件里的一種機(jī)制,用于處理軟件或信息系統(tǒng)中出現(xiàn)的異常狀況,那么你對異常處理了解多少呢?以下是由學(xué)習(xí)啦小編整理關(guān)于什么是異常處理的內(nèi)容,希望大家喜歡!

  異常處理的概述

  各種編程語言在處理異常方面具有非常顯著的不同點(錯誤檢測與異常處理區(qū)別在于:錯誤檢測是在正常的程序流中,處理不可預(yù)見問題的代碼,例如一個調(diào)用操作未能成功結(jié)束)。某些編程語言有這樣的函數(shù):當(dāng)輸入存在非法數(shù)據(jù)時不能被安全地調(diào)用,或者返回值不能與異常進(jìn)行有效的區(qū)別。例如,C語言中的atoi函數(shù)(ASCII串到整數(shù)的轉(zhuǎn)換)在輸入非法時可以返回0。在這種情況下編程者需要另外進(jìn)行錯誤檢測(可能通過某些輔助全局變量如C的errno),或進(jìn)行輸入檢驗(如通過正則表達(dá)式),或者共同使用這兩種方法。

  通過異常處理,我們可以對用戶在程序中的非法輸入進(jìn)行控制和提示,以防程序崩潰。

  從進(jìn)程的視角,硬件中斷相當(dāng)于可恢復(fù)異常,雖然中斷一般與程序流本身無關(guān)。

  從子程序編程者的視角,異常是很有用的一種機(jī)制,用于通知外界該子程序不能正常執(zhí)行。如輸入的數(shù)據(jù)無效(例如除數(shù)是0),或所需資源不可用(例如文件丟失)。如果系統(tǒng)沒有異常機(jī)制,則編程者需要用返回值來標(biāo)示發(fā)生了哪些錯誤。

  異常處理的特點

  1.在應(yīng)用程序遇到異常情況(如被零除情況或內(nèi)存不足警告)時,就會產(chǎn)生異常。

  2.發(fā)生異常時,控制流立即跳轉(zhuǎn)到關(guān)聯(lián)的異常處理程序(如果存在)。

  3.如果給定異常沒有異常處理程序,則程序?qū)⑼V箞?zhí)行,并顯示一條錯誤信息。

  4.可能導(dǎo)致異常的操作通過 try 關(guān)鍵字來執(zhí)行。

  5.異常處理程序是在異常發(fā)生時執(zhí)行的代碼塊。在 C# 中,catch 關(guān)鍵字用于定義異常處理程序。

  6.程序可以使用 throw 關(guān)鍵字顯式地引發(fā)異常。

  7.異常對象包含有關(guān)錯誤的詳細(xì)信息,其中包括調(diào)用堆棧的狀態(tài)以及有關(guān)錯誤的文本說明。

  8.即使引發(fā)了異常,finally 塊中的代碼也會執(zhí)行,從而使程序可以釋放資源。

  php異常處理的方法

  擴(kuò)展 php 內(nèi)置的異常處理類

  用戶可以用自定義的異常處理類來擴(kuò)展 php 內(nèi)置的異常處理類。以下的代碼說明了在內(nèi)置的異常處理類中,哪些屬性和方法在子類中是可訪問和可繼承的。譯者注:以下這段代碼只為說明內(nèi)置異常處理類的結(jié)構(gòu),它并不是一段有實際意義的可用代碼。

  內(nèi)置的異常處理類

  <?php class Exception { protected $message = 'Unknown exception' ; // 異常信息 protected $code = 0 ; // 用戶自定義異常代碼 protected $file ; // 發(fā)生異常的文件名 protected $line ; // 發(fā)生異常的代碼行號 function __construct $message = null $code = 0 ); final function getMessage (); // 返回異常信息 final function getCode (); // 返回異常代碼 final function getFile (); // 返回發(fā)生異常的文件名 final function getLine (); // 返回發(fā)生異常的代碼行號 final function getTrace (); // backtrace() 數(shù)組 final function getTraceAsString (); // 已格成化成字符串的 getTrace() 信息 /* 可重載的方法 */ function __toString (); // 可輸出的字符串 } ?>如果使用自定義的類來擴(kuò)展內(nèi)置異常處理類,并且要重新定義構(gòu)造函數(shù)的話,建議同時調(diào)用 parent::__construct() 來檢查所有的變量是否已被賦值。當(dāng)對象要輸出字符串的時候,可以重載 __toString() 并自定義輸出的樣式。

  擴(kuò)展 php 內(nèi)置的異常處理類

  <?php /** * 自定義一個異常處理類 */ class MyException extends Exception{ // 重定義構(gòu)造器使 message 變?yōu)楸仨毐恢付ǖ膶傩?public function __construct( $message $code = 0 ) { , // 自定義的代碼 // 確保所有變量都被正確賦值 parent:: __construct ( $message $code ); } // 自定義字符串輸出的樣式 */ public function __toString () { return __CLASS__ . ": [{ $this -> code }] : {$this->message }/n " ; } public function customFunction () { echo "A Custom function for this type of exception/n" ; }} /** * 創(chuàng)建一個用于測試異常處理機(jī)制的類 */class TestException { public $var ; const THROW_NONE = 0 ; const THROW_CUSTOM = 1 ; const THROW_DEFAULT = 2 ; function __construct( $avalue = self :: THROW_NONE ) { switch ( $avalue ) { case self :: THROW_CUSTOM : // 拋出自定義異常 throw new MyException ( '1 is an invalid parameter' 5 ); break; case self:: THROW_DEFAULT: // 拋出默認(rèn)的異常 throw new Exception ( '2 isnt allowed as a parameter' 6 ); break; default: // 沒有異常的情況下,創(chuàng)建一個對象 $this var = $avalue ; break; } }}
看過“異常處理的特點”的人還看了:

1.ios開發(fā)OC中動態(tài)綁定和異常處理

2.桌面上word圖標(biāo)異常的處理方法

3.桌面圖標(biāo)顯示異常怎么解決

4.系統(tǒng)顯示網(wǎng)絡(luò)受限異常如何解決

5.如何解決qq登陸異常問題

6.Win7字體顯示異常怎么解決

1810231 主站蜘蛛池模板: 男同精品视频免费观看网站 | 男女猛烈无遮挡免费视频APP| 国产资源精品中文字幕| 国产免费视频一区二区| 高级艳妇交换俱乐部小说| 亚洲欧洲av人一区二区| 中文字幕亚洲人妻系列| 免费夜色污私人影院在线观看 | 人妻少妇久久中文字幕| 激情综合网激情五月激情| 国产永久免费高清在线观看| 亚洲AV无码成H人动漫无遮挡| 亚洲狠狠婷婷综合久久久| 亚洲欧洲日产国产 最新| 91精品人妻中文字幕色| 亚洲欧美人成电影在线观看| 久久精品国产99久久6| 中文字幕日韩精品亚洲一区| 91国产自拍一区二区三区| 国产午夜福利精品视频| 亚洲美女高潮不断亚洲| 特级做a爰片毛片免费看无码| 熟女激情乱亚洲国产一区| 扒开双腿猛进入喷水高潮叫声| 亚洲国产另类久久久精品黑人 | 婷婷开心深爱五月天播播| 四虎成人精品无码| 精品国产乱一区二区三区| 久久国产成人av蜜臀| 男人进女人下部全黄大色视频| 国产精品亚洲综合色区丝瓜| 亚洲国产日韩a在线亚洲| 91中文字幕一区在线| 推油少妇久久99久久99久久| 福利视频一区二区在线| 国产va免费精品观看精品| 国产不卡在线一区二区| 国产人妻精品午夜福利免费| 六十路老熟妇乱子伦视频| 国产一区二区三区在线观看免费| 国产精品高清一区二区三区|