亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

輕松學(xué)習(xí)C#的異常處理

 更新時(shí)間:2022年05月06日 14:24:26   投稿:lijiao  
輕松學(xué)習(xí)C#的異常處理,對(duì)C#的異常處理感興趣的朋友可以參考本篇文章,幫助大家更靈活的運(yùn)用C#的異常處理

異常是程序運(yùn)行中發(fā)生的錯(cuò)誤,異常處理是程序設(shè)計(jì)的一部分。錯(cuò)誤的出現(xiàn)并不總是編寫(xiě)應(yīng)用程序者的原因,有時(shí)候應(yīng)用程序會(huì)因?yàn)榻K端用戶的操作發(fā)生錯(cuò)誤。無(wú)論如何,在編寫(xiě)程序前,都應(yīng)該預(yù)測(cè)應(yīng)用程序和代碼中出現(xiàn)的錯(cuò)誤。一般良好的編程規(guī)范也會(huì)避免一些不必要的程序錯(cuò)誤的出現(xiàn)。

在項(xiàng)目的開(kāi)發(fā)過(guò)程中,并不是所有的代碼執(zhí)行都和想象那樣理想,總是避免不了異常的發(fā)生。這就需要編程語(yǔ)言的去處理這些異常,C#語(yǔ)言中有三種異常處理語(yǔ)句:

try...catch;//處理異常
try...finally;//清楚異常
try...catch...finally;//處理所有異常

一、用try...catch語(yǔ)句捕獲異常

在try語(yǔ)句中包含容易產(chǎn)生異常的代碼,接著捕獲異常,catch段里的代碼會(huì)注意進(jìn)行適當(dāng)?shù)奶幚恚?br />格式為:   

try
        {
        }
        catch(異常類  異常對(duì)象實(shí)例)
        {
        }

例一:用上述的語(yǔ)句捕獲訪問(wèn)整型數(shù)組nums時(shí)產(chǎn)生索引越界異常,并提示給用戶:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
 
namespace Text 
{ 
 class Program 
 { 
  static void Main(string[] args) 
  { 
   int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 
   try//捕獲異常 
   { 
    for (int i = 0; i <= nums.Length; i++)//遍歷數(shù)組所有元素 
    { 
     Console.Write(nums[i] + " "); 
    } 
   } 
   catch (Exception a)//訪問(wèn)異常對(duì)象 
   { 
    Console.Write(a.Message);//輸出異常錯(cuò)誤 
   } 
    Console.WriteLine(); 
    Console.ReadLine(); 
  } 
 
 } 
}

輸出的結(jié)果為:

 

由于數(shù)據(jù)元素的索引是從0開(kāi)始的,for語(yǔ)句遍歷數(shù)組元素時(shí),用了“小于或等于”,正好多遍歷一次,所以出現(xiàn)索引越界。

二、清除與處理所有異常

如果用戶對(duì)產(chǎn)生的錯(cuò)誤不進(jìn)行處理,而清除產(chǎn)生的錯(cuò)誤分配的資源,那么可以使用try...finally語(yǔ)句來(lái)完成,這里的finally塊用于清除try塊中分配的任何資源以及運(yùn)行任何即使在發(fā)生異常時(shí)也必須執(zhí)行的帶代碼。格式為:

try
        {
        }
        catch(異常類  異常對(duì)象實(shí)例)
        {
        }
        finally
        {
        }

這個(gè)組合是處理所有異常最好的,它合并前面兩種錯(cuò)誤處理技術(shù),即捕獲錯(cuò)誤,清除并繼續(xù)執(zhí)行應(yīng)用程序。

例二:用240去除這個(gè)數(shù)組中的各元素,由于數(shù)組中的元素值有0,所以會(huì)產(chǎn)生處數(shù)據(jù)為0的錯(cuò)誤。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
 
namespace Text 
{ 
 class Program 
 { 
  static void Main(string[] args) 
  { 
   int[] nums = { 4,8,12,0,10 }; 
   try//捕獲異常 
   { 
    for (int i = 0; i < nums.Length; i++) 
    { 
     int valude = 0; 
     valude = 240 / nums[i]; 
     Console.WriteLine("240/{0}={1}", nums[i], valude); 
    } 
   } 
   catch (Exception a)//訪問(wèn)異常對(duì)象 
   { 
    Console.WriteLine(a.Message);//輸出異常錯(cuò)誤 
   } 
   finally 
   { 
    Console.WriteLine("有沒(méi)有異常我都會(huì)運(yùn)行"); 
   } 
    Console.WriteLine(); 
    Console.ReadLine(); 
  } 
 
 } 
} 

輸出的結(jié)果為:

三、引發(fā)異常

在編寫(xiě)程序時(shí),有時(shí)可能要引發(fā)異常,以便捕獲異常。引發(fā)異常是通過(guò)throw語(yǔ)句和一個(gè)適當(dāng)?shù)漠惓n悂?lái)實(shí)現(xiàn)的。其格式為:

throw  new  異常類(異常描述);

異常類可以是C#語(yǔ)言類庫(kù)中提供的異常類,也可以是自定義異常類。異常描述為可選擇項(xiàng),用來(lái)描述產(chǎn)生異常錯(cuò)誤,可產(chǎn)生異常時(shí)捕獲到以便快速找到產(chǎn)生錯(cuò)誤的代碼。

例三:將字符串轉(zhuǎn)換為整數(shù)的異常

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
 
namespace Text 
{ 
 class Program 
 { 
  static void Main(string[] args) 
  { 
   string str = "string"; 
   try 
   { 
    int returnInt; 
    returnInt = Program.ConvertStringToInt(str);//調(diào)用轉(zhuǎn)換 
    Console.Write(returnInt); 
   } 
   catch (FormatException a) 
   { 
    Console.WriteLine(a.Message); 
   } 
   Console.ReadLine(); 
  } 
  private static int ConvertStringToInt(string str)//定義轉(zhuǎn)換函數(shù) 
  { 
   int intNum = 0; 
   try 
   { 
    intNum = Convert.ToInt32(str); 
    return intNum; 
   } 
   catch 
   { 
    throw new FormatException("轉(zhuǎn)換錯(cuò)誤");//引發(fā)異常 
   } 
  } 
 
 } 
} 

輸出的結(jié)果為:

四、自定義異常類

C#語(yǔ)言雖然預(yù)定義了許多異常類,但是,在有些場(chǎng)合,創(chuàng)建自己的異常類可能會(huì)方便。自定義異常類是通過(guò)繼承System.Exception類來(lái)創(chuàng)建自己的異常類。其步驟是:

(1)聲明一個(gè)異常,格式如下:class  異常類名:Exception{ }
(2)引發(fā)自己的異常,格式如下: throw(ExceptionName);

 例四:定義一個(gè)異常類MyException,然后引發(fā)這個(gè)異常類。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
 
namespace Text 
{ 
 class MyException : SystemException { }//聲明異常 
 class Program 
 { 
  static void Main(string[] args) 
  { 
   try 
   { 
    Console.WriteLine("引發(fā)異常前我是被執(zhí)行的");//引發(fā)異常前的提示 
    throw new MyException(); 
    Console.WriteLine("因?yàn)橐呀?jīng)引發(fā)異常,所以我不能被執(zhí)行"); 
   } 
   catch (MyException) 
   { 
    Console.WriteLine("引發(fā)異常"); 
   }  
   Console.ReadLine(); 
  } 
 
 } 
} 

輸出的結(jié)果為:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。

相關(guān)文章

  • C#匹配中文字符串的4種正則表達(dá)式分享

    C#匹配中文字符串的4種正則表達(dá)式分享

    這篇文章主要介紹了C#匹配中文字符串的4種正則表達(dá)式分享,本文介紹了4種形式下的中文字符串匹配正則,需要的朋友可以參考下
    2014-08-08
  • 詳解.NET 4.0中的泛型協(xié)變(covariant)和反變(contravariant)

    詳解.NET 4.0中的泛型協(xié)變(covariant)和反變(contravariant)

    這篇文章主要介紹了詳解.NET 4.0中的泛型協(xié)變(covariant)和反變(contravariant),本文講解了協(xié)變和反變的背景知識(shí)、.NET 4.0引入的泛型協(xié)變、反變性、協(xié)變和反變的相互作用等內(nèi)容,需要的朋友可以參考下
    2015-06-06
  • C#自定義IP輸入框控件

    C#自定義IP輸入框控件

    這篇文章主要為大家詳細(xì)介紹了C#自定義IP輸入框控件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • 遍歷Hashtable 的幾種方法

    遍歷Hashtable 的幾種方法

    遍歷Hashtable 的幾種方法...
    2007-03-03
  • C#使用二維數(shù)組模擬斗地主

    C#使用二維數(shù)組模擬斗地主

    這篇文章主要介紹了C#使用二維數(shù)組模擬斗地主的方法,通過(guò)C#的二維數(shù)組簡(jiǎn)單實(shí)現(xiàn)撲克隨機(jī)發(fā)牌的功能,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • C# WinForm制作一個(gè)批量轉(zhuǎn)化文件格式的小工具

    C# WinForm制作一個(gè)批量轉(zhuǎn)化文件格式的小工具

    在生活中有時(shí)候會(huì)遇到批量轉(zhuǎn)換格式的需求,一個(gè)個(gè)點(diǎn)太麻煩了,一個(gè)能夠?qū)崿F(xiàn)批量文件格式轉(zhuǎn)換的工具非常有用,所以本文小編使用C# WinForm制作一個(gè)批量轉(zhuǎn)化文件格式的小工具,文中有具體實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2023-11-11
  • c# 播放聲音的四種方法

    c# 播放聲音的四種方法

    這篇文章主要介紹了c# 播放聲音的四種方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2020-11-11
  • C# Winform多屏幕多顯示器編程技巧實(shí)例

    C# Winform多屏幕多顯示器編程技巧實(shí)例

    這篇文章主要介紹了C# Winform多屏幕多顯示器編程技巧實(shí)例,本文直接給出代碼實(shí)例,需要的朋友可以參考下
    2015-06-06
  • C#設(shè)計(jì)模式之Builder生成器模式解決帶老婆配置電腦問(wèn)題實(shí)例

    C#設(shè)計(jì)模式之Builder生成器模式解決帶老婆配置電腦問(wèn)題實(shí)例

    這篇文章主要介紹了C#設(shè)計(jì)模式之Builder生成器模式解決帶老婆配置電腦問(wèn)題,簡(jiǎn)單介紹了生成器模式的概念、功能并結(jié)合具體實(shí)例形式分析了C#生成器模式解決配電腦問(wèn)題的步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • 基于C#實(shí)現(xiàn)屏幕桌面截圖

    基于C#實(shí)現(xiàn)屏幕桌面截圖

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)屏幕桌面截圖以及左上角區(qū)域截圖功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以了解一下
    2022-12-12

最新評(píng)論