C# 異常

2018-01-16 02:10 更新

C#異常

using語句

許多類封裝了非托管資源。

這些類實現(xiàn) System.IDisposable ,它定義了一個名為Dispose的單一無參數(shù)方法來清理這些資源。

using語句提供了一個優(yōu)雅的語法,用于在finally塊中的IDisposable對象上調(diào)用Dispose。

如下:

using (StreamReader reader = File.OpenText ("file.txt")) {
    ...
}

等效于:

StreamReader reader = File.OpenText ("file.txt");
try {
    ...
} finally {
   if (reader != null) ((IDisposable)reader).Dispose();
}

拋出異常

異??梢杂蛇\行時或用戶代碼拋出。

在這個例子中,Display將拋出System.ArgumentNullException :

class Main {
   static void Display (string name) {
      if (name == null){
          throw new ArgumentNullException ("name");
      }
      Console.WriteLine (name);
   }
   static void Main() {
       try { 
          Display (null); 
       } catch (ArgumentNullException ex) {
          Console.WriteLine ("Caught the exception");
       }
   }
}

重新拋出異常

您可以捕獲并重新拋出異常,如下所示:

try { 
   ... 
} catch (Exception ex){
    // Log error
    ...
    throw; // Rethrow same exception
}

System.Exception的鍵屬性

System.Exception的最重要的屬性如下:

  • StackTrace
    一個字符串,表示從異常原點調(diào)用到catch塊的所有方法。
  • Message
    錯誤的字符串描述。
  • InnerException
    引起外部異常的內(nèi)部異常。

常見異常類型

以下異常類型廣泛用于整個CLR和.NET Framework。

  • System.ArgumentException
    拋出一個非法的賦值。
  • System.ArgumentNullException
    當函數(shù)參數(shù)為null時拋出的ArgumentException的子類。
  • System.ArgumentOutOfRangeException
    當數(shù)值參數(shù)太大或太小時拋出的ArgumentOutOfRangeException的子類。
  • System.InvalidOperationException
    當對象的狀態(tài)不適合于方法時拋出。
  • System.NotSupportedException
    引發(fā)支持的函數(shù)。
  • System.NotImplementedException
    拋出一個未實現(xiàn)的函數(shù)。
  • System.ObjectDisposedException
    當調(diào)用函數(shù)的對象已經(jīng)布置時拋出。

TryXXX 方法模式

int類型定義兩個其兩個版本的Parse 方法:

public int Parse (string input);
public bool TryParse (string input, out int returnValue);

如果解析失敗, Parse 拋出異常; TryParse 返回 false 。

您可以通過 XXX 方法調(diào)用 TryXXX 方法來實現(xiàn)此模式,如下所示:

public return-type XXX (input-type input) {

return-type returnValue;

if (!TryXXX (input, out returnValue))
    throw new YYYException (...)
    return returnValue;
}
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號