国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java異常學(xué)習(xí)之自定義異常詳解

Java異常學(xué)習(xí)之自定義異常詳解

2020-11-22 22:38AlanLee(Java) Java教程

你的程序總有一天會(huì)崩潰掉,在崩潰掉的時(shí)候我們要知道它在哪,為了什么而崩潰掉,數(shù)據(jù)的保存或者丟失情況如何等問題。下面這篇文章主要給大家介紹了關(guān)于Java異常學(xué)習(xí)之自定義異常的相關(guān)資料,需要的朋友可以參考借鑒,下

前言

哎呀,媽呀,又出異常了!俗話說:“代碼虐我千百遍,我待代碼如初戀”。

Java異常學(xué)習(xí)之自定義異常詳解

小alan最近一直在忙著工作,已經(jīng)很久沒有寫寫東西來加深自己的理解了,今天來跟大家聊聊java異常。java異常的體系什么的,理論知識啥的我就懶得去bb太多了,是個(gè)搞java開發(fā)的都知道,只是可能理解的不深,這個(gè)大家可以自己多看看資料,我就簡單的說說。

什么是異常?

我不知道大家都是怎么去理解的,我的理解很簡單,那就是不正常的情況,比如我現(xiàn)在是個(gè)男的,但是我卻有著女人所獨(dú)有的東西,在我看來這尼瑪肯定是種異常,簡直不能忍。就拿上面的異常圖片來說,你應(yīng)該是有小弟弟的,但你卻沒有小弟弟,這就是不正常的情況了,所以java這個(gè)妹子會(huì)告訴你,你應(yīng)該有小弟弟的才能辦事,或者你沒小弟弟就別來辦事,你沒小弟弟也要強(qiáng)上別人,那也沒法玩啊是吧?

常說我們?nèi)说淖孀谑窃常惓xception的祖宗那就是throwable類了,除了exception類外,throwable還有一個(gè)子類error 。error這玩意就不說了,你如果遇到了它你可以把電腦砸了,呼呼呼...跟大家開個(gè)玩笑,反正這玩意不是我們程序能處理的,它在程序處理的范疇之外。至于異常exception又分為傻傻啥的,我就不bb了,再bb就b到這上面了。

給大家隨便列舉幾個(gè)異常:

runtimeexception:你不能跑得足夠快,可能因?yàn)槟闾至恕jP(guān)掉你的電腦,出門鍛煉吧。

nullpointerexception:你沒有狗。請你先找一只狗,比如一只布烈塔尼獵犬,然后再試一次。

indexoutofboundsexception:你把食指放在了無法接收的地方,重新放置,再試一次。

filenotfoundexception:一名木匠應(yīng)該總是知道他的工具放在哪里。

notserializableexception:你正試圖把一部電影改成電視劇。

這尼瑪什么鬼?反正我是沒看懂。還好今天我要理解的對象不是上面的這些玩意,搞錯(cuò)對象就不好了,看看就好了,但是別亂搞,男人都懂的,嘖..嘖..嘖...。

自定義異常

今天我們要來理解的是什么是自定義異常,為什么要使用自定義異常,使用自定義異常有哪些好處,有哪些不好的地方?

要使用自定義異常就跟你和女朋友相處一樣的,首先你得知道你為什么要跟你女朋友在一起,你女朋友有哪些好處,有哪些不好的地方,再來和你女朋友談婚論嫁過一輩子,我們就先來說說這些問題,最后再來看怎么使用自定義異常,自定義異常的實(shí)現(xiàn)和使用非常簡單,關(guān)鍵還是理解why的內(nèi)容。

為什么要使用自定義異常,有什么好處?

      1.我們在工作的時(shí)候,項(xiàng)目是分模塊或者分功能開發(fā)的 ,基本不會(huì)你一個(gè)人開發(fā)一整個(gè)項(xiàng)目,使用自定義異常類就統(tǒng)一了對外異常展示的方式。

      2.有時(shí)候我們遇到某些校驗(yàn)或者問題時(shí),需要直接結(jié)束掉當(dāng)前的請求,這時(shí)便可以通過拋出自定義異常來結(jié)束,如果你項(xiàng)目中使用了springmvc比較新的版本的話有控制器增強(qiáng),可以通過@controlleradvice注解寫一個(gè)控制器增強(qiáng)類來攔截自定義的異常并響應(yīng)給前端相應(yīng)的信息(關(guān)于springmvc控制器增強(qiáng)的知識有空再和大家分享)。

      3.自定義異常可以在我們項(xiàng)目中某些特殊的業(yè)務(wù)邏輯時(shí)拋出異常,比如"中性".equals(sex),性別等于中性時(shí)我們要拋出異常,而java是不會(huì)有這種異常的。系統(tǒng)中有些錯(cuò)誤是符合java語法的,但不符合我們項(xiàng)目的業(yè)務(wù)邏輯。

      4.使用自定義異常繼承相關(guān)的異常來拋出處理后的異常信息可以隱藏底層的異常,這樣更安全,異常信息也更加的直觀。自定義異常可以拋出我們自己想要拋出的信息,可以通過拋出的信息區(qū)分異常發(fā)生的位置,根據(jù)異常名我們就可以知道哪里有異常,根據(jù)異常提示信息進(jìn)行程序修改。比如空指針異常nullpointexception,我們可以拋出信息為“xxx為空”定位異常位置,而不用輸出堆棧信息。

說完了為什么要使用自定義異常,有什么好處,我們再來看看自定義異常的毛病:

毋庸置疑,我們不可能期待jvm(java虛擬機(jī))自動(dòng)拋出一個(gè)自定義異常,也不能夠期待jvm會(huì)自動(dòng)處理一個(gè)自定義異常。發(fā)現(xiàn)異常、拋出異常以及處理異常的工作必須靠編程人員在代碼中利用異常處理機(jī)制自己完成。這樣就相應(yīng)的增加了一些開發(fā)成本和工作量,所以項(xiàng)目沒必要的話,也不一定非得要用上自定義異常,要能夠自己去權(quán)衡。

最后,我們來看看怎么使用自定義異常:

在 java 中你可以自定義異常。編寫自己的異常類時(shí)需要記住下面的幾點(diǎn)。

       •所有異常都必須是 throwable 的子類。

       •如果希望寫一個(gè)檢查性異常類,則需要繼承 exception 類。

       •如果你想寫一個(gè)運(yùn)行時(shí)異常類,那么需要繼承 runtimeexception 類。

可以像下面這樣定義自己的異常類:

class myexception extends exception{ }

我們來看一個(gè)完整的實(shí)例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package com.czgo.exception;
 
/**
 * 自定義異常類(繼承運(yùn)行時(shí)異常)
 * @author alanlee
 * @version 2016/11/26
 */
public class myexception extends runtimeexception {
 
 private static final long serialversionuid = 1l;
 
 /**
  * 錯(cuò)誤編碼
  */
 private string errorcode;
 
 /**
  * 消息是否為屬性文件中的key
  */
 private boolean propertieskey = true;
 
 /**
  * 構(gòu)造一個(gè)基本異常.
  *
  * @param message
  *   信息描述
  */
 public myexception(string message)
 {
  super(message);
 }
 
 /**
  * 構(gòu)造一個(gè)基本異常.
  *
  * @param errorcode
  *   錯(cuò)誤編碼
  * @param message
  *   信息描述
  */
 public myexception(string errorcode, string message)
 {
  this(errorcode, message, true);
 }
 
 /**
  * 構(gòu)造一個(gè)基本異常.
  *
  * @param errorcode
  *   錯(cuò)誤編碼
  * @param message
  *   信息描述
  */
 public myexception(string errorcode, string message, throwable cause)
 {
  this(errorcode, message, cause, true);
 }
 
 /**
  * 構(gòu)造一個(gè)基本異常.
  *
  * @param errorcode
  *   錯(cuò)誤編碼
  * @param message
  *   信息描述
  * @param propertieskey
  *   消息是否為屬性文件中的key
  */
 public myexception(string errorcode, string message, boolean propertieskey)
 {
  super(message);
  this.seterrorcode(errorcode);
  this.setpropertieskey(propertieskey);
 }
 
 /**
  * 構(gòu)造一個(gè)基本異常.
  *
  * @param errorcode
  *   錯(cuò)誤編碼
  * @param message
  *   信息描述
  */
 public myexception(string errorcode, string message, throwable cause, boolean propertieskey)
 {
  super(message, cause);
  this.seterrorcode(errorcode);
  this.setpropertieskey(propertieskey);
 }
 
 /**
  * 構(gòu)造一個(gè)基本異常.
  *
  * @param message
  *   信息描述
  * @param cause
  *   根異常類(可以存入任何異常)
  */
 public myexception(string message, throwable cause)
 {
  super(message, cause);
 }
 
 public string geterrorcode()
 {
  return errorcode;
 }
 
 public void seterrorcode(string errorcode)
 {
  this.errorcode = errorcode;
 }
 
 public boolean ispropertieskey()
 {
  return propertieskey;
 }
 
 public void setpropertieskey(boolean propertieskey)
 {
  this.propertieskey = propertieskey;
 }
 
}

使用自定義異常拋出異常信息:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.czgo.exception;
 
public class myexceptiontest {
 
 public static void main(string[] args) {
  
   string[] sexs = {"男性","女性","中性"};
   for(int i = 0; i < sexs.length; i++){
    if("中性".equals(sexs[i])){
     throw new myexception("你全家都是中性!");
    }else{
     system.out.println(sexs[i]);
    }
   }
 }
}

運(yùn)行結(jié)果:

Java異常學(xué)習(xí)之自定義異常詳解

就是這么簡單,我的話實(shí)現(xiàn)了很多構(gòu)造函數(shù),可以根據(jù)實(shí)際業(yè)務(wù)需求去拋出相應(yīng)的自定義異常。

結(jié)束語

現(xiàn)在搞軟件開發(fā)的人越來越多了,高手?jǐn)?shù)不勝數(shù),菜鳥也數(shù)不勝數(shù),把這行的行情攪的比較混亂。所以初入這行的哥們一定要有危機(jī)意識。公司都想要工資開的不高,又能做一大把事情的人,搞開發(fā)很累,但是在當(dāng)前的環(huán)境下,一定要不斷的去提高自己。到了洗牌的時(shí)候,可能被淘汰的人里面就有你,除非你去做別的,不然就硬著頭皮干幾年把技術(shù)搞扎實(shí),該復(fù)習(xí)的知識就多多復(fù)習(xí),該學(xué)習(xí)的知識就多多學(xué)習(xí),基礎(chǔ)扎實(shí)了就去看看底層的東西,比如理解理解java虛擬機(jī),研究研究spring源碼。多關(guān)注關(guān)注前沿技術(shù)的發(fā)展,因?yàn)槟悻F(xiàn)在所用的東西或許某一天大部分公司就不用了,或者根本滿足不了項(xiàng)目的需求,這都是有可能的。希望大家都能混出自己的一片天地,小alan現(xiàn)在也還在吃土中,所以大家都在一起前行,這世界終究是屬于年輕人的,別氣餒。

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對服務(wù)器之家的支持。

原文鏈接:http://www.cnblogs.com/AlanLee/p/6104492.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 嫩草在线视频 | 黄色在线免费观看 | 激情综合婷婷 | 日韩不卡一区二区三区 | 欧美激情精品久久久久久 | 黄色成人在线观看视频 | 国产一区二区三区在线 | av网址在线| 欧美午夜寂寞影院 | 午夜精品视频在线观看 | 北条麻妃一区二区三区中文字幕 | 精品无码久久久久国产 | 国产主播福利 | 91在线视频播放 | 久久久久久九九九 | 精品欧美乱码久久久久久1区2区 | 成年人免费在线观看网站 | 国产一区二区影院 | 久久五月天婷婷 | 欧美区国产区 | 在线一区视频 | 精品日韩在线 | 久久视频免费 | 成人福利在线观看 | 五月婷婷在线观看 | 在线播放中文字幕 | 精品日韩视频 | 希岛爱理av一区二区三区 | 伊人99 | 国产一区二区在线免费观看 | 日韩中文字幕在线观看 | 日韩在线精品 | 在线观看午夜 | 国产精品高潮呻吟久久 | 精品一区二区久久久久久久网站 | 免费在线一区二区 | 日本久久久久 | 国产欧美日本 | 九九热九九 | 亚洲一区二区中文 | 人人澡人人射 |