上一篇:異常Exception(二) 使用try...catch...捕獲異常,如果能預料到某些異常可能發生,可以使用精確的異常例如“FileNotFoundException”、“DirectoryNotFoundException”、“IOException”等,最有使用一般異常“Excepti ...
上一篇:異常Exception(二)
使用try...catch...捕獲異常,如果能預料到某些異常可能發生,可以使用精確的異常例如“FileNotFoundException”、“DirectoryNotFoundException”、“IOException”等,最有使用一般異常“Exception”。
using System; using System.Collections; using System.IO; namespace ConsoleApp5 { class Program { static void Main(string[] args) { try { using (StreamReader sr = File.OpenText("data.txt")) { Console.WriteLine($"The first line of this file is {sr.ReadLine()}"); } } catch (FileNotFoundException e) { Console.WriteLine($"The file was not found: '{e}'"); } catch (DirectoryNotFoundException e) { Console.WriteLine($"The directory was not found: '{e}'"); } catch (IOException e) { Console.WriteLine($"The file could not be opened: '{e}'"); } catch (Exception e) { Console.WriteLine($"其他異常:{e}"); } Console.ReadLine(); } } }View Code
使用throw,且throw添加異常對象,顯示拋出異常。throw後面什麼都不加,拋出當前異常。
using System; using System.IO; namespace ConsoleApp5 { class Program { static void Main(string[] args) { FileStream fs=null; try { fs = new FileStream(@"C:\temp\data.txt", FileMode.Open); var sr = new StreamReader(fs); string line = sr.ReadLine(); Console.WriteLine(line); } catch (FileNotFoundException e) { Console.WriteLine($"[Data File Missing] {e}"); throw new FileNotFoundException(@"[data.txt not in c:\temp directory]", e); // 直接使用throw相當拋出當前異常。 } finally { if (fs != null) { fs.Close(); Console.WriteLine("關掉"); } } Console.ReadLine(); } } }View Code
自定義異常:繼承System.Exception。自定義的異常命名應該以“Exception”結尾,例如“StudentNotFoundException
”。在使用遠程調用服務時,服務端的自定義異常要保證客戶端也可用,客戶端包括調用方和代理。