try{
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、永泰ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的永泰網(wǎng)站制作公司
int[] a=new int[]{1,2};
Object x=new Integer(0);
System.out.println(a[2]);//數(shù)組下標(biāo)越界
Integer.parseInt("123String");//數(shù)字格式化異常
System.out.println((String)x);//強(qiáng)制類型轉(zhuǎn)換異常
Class.forName("com.buhaowan.HelloWorld");//類加載異常
}catch(ArrayIndexOutOfBoundsException e){
System.out.println("數(shù)組下標(biāo)越界異常");
}catch(NumberFormatException e){
System.out.println("數(shù)字格式化異常");
}catch(ClassCastException e){
System.out.println("強(qiáng)制類型轉(zhuǎn)換異常");
}catch(ClassNotFoundException e){
System.out.println("類加載異常");
}catch(Exception e){
}
相信作為程序員的我們?cè)趯?duì)程序進(jìn)行編譯過(guò)程中經(jīng)常會(huì)遇到錯(cuò)誤,或者在運(yùn)行過(guò)程中出現(xiàn)錯(cuò)誤,在這里主要跟大家談?wù)劷?jīng)常遇到的一些異常與錯(cuò)誤,以及解決辦法。
異常是指程序在編譯或運(yùn)行過(guò)程出現(xiàn)的錯(cuò)誤。
在java.lang包中Throwable包含了所有的異常。
Error (錯(cuò)誤) 和Exception(異常)
(1)Error(錯(cuò)誤)
一旦發(fā)生無(wú)法修復(fù),但可以避免發(fā)生。
常見(jiàn)錯(cuò)誤類:
IOError:I/O錯(cuò)誤,當(dāng)發(fā)生嚴(yán)重的I/O錯(cuò)誤時(shí),拋出此錯(cuò)誤。
VirtualMachineError?:虛擬機(jī)錯(cuò)誤,當(dāng) Java 虛擬機(jī)崩潰或用盡了它繼續(xù)操作所需的資源時(shí),拋出該錯(cuò)誤。
StackOverflowError:棧內(nèi)存滿了,當(dāng)應(yīng)用程序遞歸太深而發(fā)生堆棧溢出時(shí),拋出該錯(cuò)誤。
OutofMemoryError:堆內(nèi)存滿了,因?yàn)閮?nèi)存溢出或沒(méi)有可用的內(nèi)存提供給垃圾回收器時(shí),Java 虛擬機(jī)無(wú)法分配一個(gè)對(duì)象,這時(shí)拋出該異常。
以上是一些常見(jiàn)的錯(cuò)誤,在Error類中還有一些別的錯(cuò)誤(參照文件Java.lang.Throwable.Error).
(2)Exception(異常)
一旦發(fā)生,可以捕獲并處理,不會(huì)導(dǎo)致程序終止,有時(shí)可以避免有時(shí)無(wú)法避免。
異常的分類:
1.編譯時(shí)異常(需要強(qiáng)制處理)?????? 2.運(yùn)行時(shí)異常(不需要強(qiáng)制處理)
常見(jiàn)的異常有:
IOException:輸入輸出流異常
FileNotFoundException:文件找不到的異常
ClassNotFoundException:類找不到的異常
DataFormatException:數(shù)據(jù)格式化異常
NoSuchFieldException:沒(méi)有匹配的屬性異常
NoSuchMethodException:沒(méi)有匹配的方法異常
SQLException:數(shù)據(jù)庫(kù)操作異常
TimeoutException:執(zhí)行超時(shí)異常
常見(jiàn)的運(yùn)行時(shí)異常:
RuntimeException:運(yùn)行時(shí)異常
NullPointerException:空指針異常
ArrayIndexOutofBoundsException:數(shù)組越界異
ClassCastException:類型轉(zhuǎn)換異常
IllegalArgumentException:非法的參數(shù)異常
InputMismatchException:輸入不匹配
以上是常見(jiàn)的一些異常,另外還有別的異常,參見(jiàn)文件:Java.lang.Throwable.Exception
既然我們常常會(huì)遇到一些異常,那我們?nèi)绾蝸?lái)處理這些異常就是一個(gè)急需解決的事情。
(1) 如何處理編譯時(shí)異常?
方法一:將需要處理的代碼塊放在一個(gè)try...catch...中
try{
//需要處理異常的代碼
}catch(XXXException ef){
ef.printStackTrace();
}
我們方法一就是要將我們不確定的代碼放入try......catch中,先進(jìn)行try一下,如果沒(méi)有異常,則不會(huì)觸發(fā)catch,沒(méi)有輸出,一旦出現(xiàn)異常,那么catch就會(huì)工作,在catch中捕獲異常信息,根據(jù)異常信息進(jìn)行補(bǔ)救措施。
如以下代碼:
方法二:在出現(xiàn)異常的方法上直接向上拋出異常,throws
void ff() throws XXXException{
}
將出現(xiàn)的異常的代碼中,放入如上的方法中,就會(huì)將異常拋給該方法的上一級(jí),在主函數(shù)上繼續(xù)向上拋,最終拋給JVM java虛擬機(jī),讓JVM來(lái)解決該問(wèn)題。
如代碼:
注意:在catch和throws的時(shí)候如果不確定是什么異常,就直接寫(xiě)一個(gè)Exception.
(2) 如何處理運(yùn)行時(shí)異常?
1.一般情況下,運(yùn)行時(shí)異常是不用處理的?
2.在某些情況下,如果對(duì)發(fā)生異常的結(jié)果進(jìn)行處理,也可以對(duì)運(yùn)行時(shí)異常進(jìn)行try...catch...
以上就是一些我們處理編譯時(shí)異常和運(yùn)行時(shí)異常的方法。
在程序出現(xiàn)異常時(shí),有時(shí)候我們可以自定義異常,以便我們能夠發(fā)現(xiàn)是什么異常。
那么如何自定義異常??
1.當(dāng)運(yùn)行時(shí),程序出現(xiàn)意外,可以拋出異常對(duì)象來(lái)結(jié)束程序
如:
//拋出運(yùn)行時(shí)異常對(duì)象
RuntimeException ef = new RuntimeException("下標(biāo)越界!index:"+index+" ,size:"+size());
throw ef;
2.對(duì)于編譯時(shí)異常,同樣可以拋出異常對(duì)象
但在方法定義時(shí)候必須加上throws
如:
public void test(int t) throws Exception{
if (t 0 || t 100) {
Exception ef = new Exception("數(shù)據(jù)錯(cuò)誤");
throw ef;
}
}
例如:
運(yùn)行結(jié)果:
從結(jié)果可以看出,我們?cè)谳斎霐?shù)據(jù)的時(shí)候出現(xiàn)錯(cuò)誤,這樣通過(guò)自定義異常能夠讓我們更直接快速的找到運(yùn)行或編譯時(shí)的異常。
在上述中我們分別提到了三種throw,分別是Throwable,Throws以及throw,那么到底三者有什么區(qū)別?
Throwable:是指在在Java.lang包中的一個(gè)類,其包含了所有的異常和錯(cuò)誤,其中類Error和Exception 是它
的子類。
Thows:是指在解決編譯時(shí)異常,將方法中異常拋給上一級(jí),在方法后面要加Throw Exception來(lái)進(jìn)行拋。
throw:是指在自定義異常時(shí),如果方法出現(xiàn)異常,那么將作為引用方法的對(duì)象拋出。即拋出異常。
希望對(duì)您有所幫助!~
1、ArithmeticException - 算術(shù)運(yùn)算中,被0除或模除。
2、ArrayIndexOutOfBoundsException - 數(shù)組越界訪問(wèn)。
3、ArrayStoreException - 數(shù)據(jù)存儲(chǔ)異常,寫(xiě)數(shù)組操作時(shí),對(duì)象或數(shù)據(jù)類型不兼容。
4、ClassCastException - 類型轉(zhuǎn)換異常。
5、IllegalArgumentException - 方法的參數(shù)無(wú)效。
6、IllegalThreadStateException - 試圖非法改變線程狀態(tài),比方說(shuō)試圖啟動(dòng)一已經(jīng)運(yùn)行的線程。
7、NullPointerException - 試圖訪問(wèn)一空對(duì)象的變量、方法或空數(shù)組的元素
8、NumberFormatException - 數(shù)據(jù)格式異常,試圖把一字符串非法轉(zhuǎn)換成數(shù)值(或相反)。
9、SecurityException - 如果Applet試圖執(zhí)行一被WWW瀏覽器安全設(shè)置所禁止的操作。
10、IncompatibleClassChangeException - 如改變了某一類定義,卻沒(méi)有重新編譯其他引用了這個(gè)類的對(duì)象。如某一成員變量的聲明被從靜態(tài)改變?yōu)榉庆o態(tài),但其他引用了這個(gè)變量的類卻沒(méi)有重新編譯,或者相反。
11、OutOfMemoryException - 內(nèi)存不足,通常發(fā)生于創(chuàng)建對(duì)象之時(shí)。
12、NoClassDefFoundException - JAVA運(yùn)行時(shí)系統(tǒng)找不到所引用的類。
13、IncompatibleTypeException - 試圖實(shí)例化一個(gè)接口,Java運(yùn)行時(shí)系統(tǒng)將拋出這個(gè)異常。
14、UnsatisfiedLinkException - 如果所需調(diào)用的方法是C函數(shù),但Java運(yùn)行時(shí)系統(tǒng)卻無(wú)法連接這個(gè)函數(shù)。
15、InternalException - 系統(tǒng)內(nèi)部故障所導(dǎo)致的異常情況,可能是因?yàn)镴ava運(yùn)行時(shí)系統(tǒng)本身的原因。如果發(fā)現(xiàn)一可重現(xiàn)的InternalException,可以直接給Sun公司發(fā)電郵java@java.Sun.com。
【導(dǎo)語(yǔ)】在進(jìn)行Java編程的過(guò)程中,我們需要通過(guò)代碼編寫(xiě)進(jìn)行程序的運(yùn)行,都是人工進(jìn)行代碼編寫(xiě),所以會(huì)出現(xiàn)不少異?,F(xiàn)象,這都是屬于正?,F(xiàn)象,但是遇到這些異?,F(xiàn)象是需要大家了解并學(xué)會(huì)處理的,今天就先給大家介紹一下Java編程中常見(jiàn)異常有哪些?一起來(lái)看看吧。
Java中常見(jiàn)的異常:
1、空指針異常類:NullPointerException
2、數(shù)據(jù)類型轉(zhuǎn)換異常:java.lang.ClassCastException
3、沒(méi)有訪問(wèn)權(quán)限:java.lang.IllegalAccessException
4、方法的參數(shù)錯(cuò)誤:java.lang.IllegalArgumentException
5、數(shù)組下標(biāo)越界異常:java.lang.IndexOutOfBoundsException
6、文件已結(jié)束異常:EOFException
7、文件未找到異常:FileNotFoundException
8、字符串轉(zhuǎn)換為數(shù)字異常:NumberFormatException
9、指定的類不存在: java.lang.ClassNotFoundException
10、實(shí)例化異常:java.lang.InstantiationException
Java中數(shù)據(jù)類型轉(zhuǎn)換異常如何理解?
數(shù)據(jù)類型轉(zhuǎn)換異常:java.lang.ClassCastException
當(dāng)試圖將對(duì)某個(gè)對(duì)象強(qiáng)制執(zhí)行向下轉(zhuǎn)型,但該對(duì)象又不可轉(zhuǎn)換又不可轉(zhuǎn)換為其子類的實(shí)例時(shí)將引發(fā)該異常,如下列代碼。
Object obj = new Integer(0);
String str = obj;
Java中空指針異常類是什么意思?
空指針異常類:NullPointerException
調(diào)用了未經(jīng)初始化的對(duì)象或者是不存在的對(duì)象。經(jīng)常出現(xiàn)在創(chuàng)建圖片,調(diào)用數(shù)組這些操作中,比如圖片未經(jīng)初始化,或者圖片創(chuàng)建時(shí)的路徑錯(cuò)誤等等。對(duì)數(shù)組操作中出現(xiàn)空指針,
即把數(shù)組的初始化和數(shù)組元素的初始化混淆起來(lái)了。
數(shù)組的初始化是對(duì)數(shù)組分配需要的空間,而初始化后的數(shù)組,其中的元素并沒(méi)有實(shí)例化, 依然是空的,所以還需要對(duì)每個(gè)元素都進(jìn)行初始化(如果要調(diào)用的話)。
Java常見(jiàn)異常有很多,以上這10種希望大家能夠提前了解,這樣能夠幫助大家在實(shí)際編寫(xiě)代碼過(guò)程中,更快的進(jìn)行一場(chǎng)處理,加油!
public class Student {
private Integer age;
private Integer sex;
public Integer getAge() {
return age;
}
public void setAge(Integer age) throws Exception{
if(age 0 || age 100)
throw new Exception("年齡不在合理范圍內(nèi)");
this.age = age;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) throws Exception{
if(!(sex == 0 sex == 1))
throw new Exception("性別不是男女");
this.sex = sex;
}
public Student(Integer age, Integer sex) throws Exception{
super();
if(age 0 || age 100)
throw new Exception("年齡不在合理范圍內(nèi)");
if(!(sex == 0 sex == 1))
throw new Exception("性別不是男女");
this.age = age;
this.sex = sex;
}
public Student() {
super();
}
public static void main(String[] args) {
try {
Student student = new Student(101,2);
} catch (Exception e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}
分享文章:Java異常代碼舉例 Java中常見(jiàn)的異常
網(wǎng)頁(yè)地址:http://jinyejixie.com/article22/dochojc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供動(dòng)態(tài)網(wǎng)站、用戶體驗(yàn)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)站內(nèi)鏈、
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
網(wǎng)頁(yè)設(shè)計(jì)公司知識(shí)