try{\x0d\x0a 你要抓的有可能發(fā)生異常的代碼\x0d\x0a\x0d\x0a}catch(你要抓的異常代碼會出現(xiàn)的類型在這加個(gè)變量名代表這種類型){\x0d\x0a 一旦異常出現(xiàn),這代碼塊里面的代碼會被執(zhí)行\(zhòng)x0d\x0a}finally{\x0d\x0a 這里的代碼是即使出現(xiàn)異常或者沒有出現(xiàn)異常,這段代碼都會被執(zhí)行\(zhòng)x0d\x0a}\x0d\x0a\x0d\x0a另外要注意的是,聲明catch的類型的時(shí)候~~要從小到大的聲明會拋出的異常\x0d\x0a,比如說有人問你怎么去中山一路,你應(yīng)該要先告訴他你先坐什么車再坐什么車,不應(yīng)該直接說坐車就能去到了.
在曹縣等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),全網(wǎng)營銷推廣,外貿(mào)網(wǎng)站制作,曹縣網(wǎng)站建設(shè)費(fèi)用合理。
【導(dǎo)語】在進(jìn)行Java編程的過程中,我們需要通過代碼編寫進(jìn)行程序的運(yùn)行,都是人工進(jìn)行代碼編寫,所以會出現(xiàn)不少異常現(xiàn)象,這都是屬于正?,F(xiàn)象,但是遇到這些異?,F(xiàn)象是需要大家了解并學(xué)會處理的,今天就先給大家介紹一下Java編程中常見異常有哪些?一起來看看吧。
Java中常見的異常:
1、空指針異常類:NullPointerException
2、數(shù)據(jù)類型轉(zhuǎn)換異常:java.lang.ClassCastException
3、沒有訪問權(quán)限:java.lang.IllegalAccessException
4、方法的參數(shù)錯誤: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)試圖將對某個(gè)對象強(qiáng)制執(zhí)行向下轉(zhuǎn)型,但該對象又不可轉(zhuǎn)換又不可轉(zhuǎn)換為其子類的實(shí)例時(shí)將引發(fā)該異常,如下列代碼。
Object obj = new Integer(0);
String str = obj;
Java中空指針異常類是什么意思?
空指針異常類:NullPointerException
調(diào)用了未經(jīng)初始化的對象或者是不存在的對象。經(jīng)常出現(xiàn)在創(chuàng)建圖片,調(diào)用數(shù)組這些操作中,比如圖片未經(jīng)初始化,或者圖片創(chuàng)建時(shí)的路徑錯誤等等。對數(shù)組操作中出現(xiàn)空指針,
即把數(shù)組的初始化和數(shù)組元素的初始化混淆起來了。
數(shù)組的初始化是對數(shù)組分配需要的空間,而初始化后的數(shù)組,其中的元素并沒有實(shí)例化, 依然是空的,所以還需要對每個(gè)元素都進(jìn)行初始化(如果要調(diào)用的話)。
Java常見異常有很多,以上這10種希望大家能夠提前了解,這樣能夠幫助大家在實(shí)際編寫代碼過程中,更快的進(jìn)行一場處理,加油!
相信作為程序員的我們在對程序進(jìn)行編譯過程中經(jīng)常會遇到錯誤,或者在運(yùn)行過程中出現(xiàn)錯誤,在這里主要跟大家談?wù)劷?jīng)常遇到的一些異常與錯誤,以及解決辦法。
異常是指程序在編譯或運(yùn)行過程出現(xiàn)的錯誤。
在java.lang包中Throwable包含了所有的異常。
Error (錯誤) 和Exception(異常)
(1)Error(錯誤)
一旦發(fā)生無法修復(fù),但可以避免發(fā)生。
常見錯誤類:
IOError:I/O錯誤,當(dāng)發(fā)生嚴(yán)重的I/O錯誤時(shí),拋出此錯誤。
VirtualMachineError?:虛擬機(jī)錯誤,當(dāng) Java 虛擬機(jī)崩潰或用盡了它繼續(xù)操作所需的資源時(shí),拋出該錯誤。
StackOverflowError:棧內(nèi)存滿了,當(dāng)應(yīng)用程序遞歸太深而發(fā)生堆棧溢出時(shí),拋出該錯誤。
OutofMemoryError:堆內(nèi)存滿了,因?yàn)閮?nèi)存溢出或沒有可用的內(nèi)存提供給垃圾回收器時(shí),Java 虛擬機(jī)無法分配一個(gè)對象,這時(shí)拋出該異常。
以上是一些常見的錯誤,在Error類中還有一些別的錯誤(參照文件Java.lang.Throwable.Error).
(2)Exception(異常)
一旦發(fā)生,可以捕獲并處理,不會導(dǎo)致程序終止,有時(shí)可以避免有時(shí)無法避免。
異常的分類:
1.編譯時(shí)異常(需要強(qiáng)制處理)?????? 2.運(yùn)行時(shí)異常(不需要強(qiáng)制處理)
常見的異常有:
IOException:輸入輸出流異常
FileNotFoundException:文件找不到的異常
ClassNotFoundException:類找不到的異常
DataFormatException:數(shù)據(jù)格式化異常
NoSuchFieldException:沒有匹配的屬性異常
NoSuchMethodException:沒有匹配的方法異常
SQLException:數(shù)據(jù)庫操作異常
TimeoutException:執(zhí)行超時(shí)異常
常見的運(yùn)行時(shí)異常:
RuntimeException:運(yùn)行時(shí)異常
NullPointerException:空指針異常
ArrayIndexOutofBoundsException:數(shù)組越界異
ClassCastException:類型轉(zhuǎn)換異常
IllegalArgumentException:非法的參數(shù)異常
InputMismatchException:輸入不匹配
以上是常見的一些異常,另外還有別的異常,參見文件:Java.lang.Throwable.Exception
既然我們常常會遇到一些異常,那我們?nèi)绾蝸硖幚磉@些異常就是一個(gè)急需解決的事情。
(1) 如何處理編譯時(shí)異常?
方法一:將需要處理的代碼塊放在一個(gè)try...catch...中
try{
//需要處理異常的代碼
}catch(XXXException ef){
ef.printStackTrace();
}
我們方法一就是要將我們不確定的代碼放入try......catch中,先進(jìn)行try一下,如果沒有異常,則不會觸發(fā)catch,沒有輸出,一旦出現(xiàn)異常,那么catch就會工作,在catch中捕獲異常信息,根據(jù)異常信息進(jìn)行補(bǔ)救措施。
如以下代碼:
方法二:在出現(xiàn)異常的方法上直接向上拋出異常,throws
void ff() throws XXXException{
}
將出現(xiàn)的異常的代碼中,放入如上的方法中,就會將異常拋給該方法的上一級,在主函數(shù)上繼續(xù)向上拋,最終拋給JVM java虛擬機(jī),讓JVM來解決該問題。
如代碼:
注意:在catch和throws的時(shí)候如果不確定是什么異常,就直接寫一個(gè)Exception.
(2) 如何處理運(yùn)行時(shí)異常?
1.一般情況下,運(yùn)行時(shí)異常是不用處理的?
2.在某些情況下,如果對發(fā)生異常的結(jié)果進(jìn)行處理,也可以對運(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)意外,可以拋出異常對象來結(jié)束程序
如:
//拋出運(yùn)行時(shí)異常對象
RuntimeException ef = new RuntimeException("下標(biāo)越界!index:"+index+" ,size:"+size());
throw ef;
2.對于編譯時(shí)異常,同樣可以拋出異常對象
但在方法定義時(shí)候必須加上throws
如:
public void test(int t) throws Exception{
if (t 0 || t 100) {
Exception ef = new Exception("數(shù)據(jù)錯誤");
throw ef;
}
}
例如:
運(yùn)行結(jié)果:
從結(jié)果可以看出,我們在輸入數(shù)據(jù)的時(shí)候出現(xiàn)錯誤,這樣通過自定義異常能夠讓我們更直接快速的找到運(yùn)行或編譯時(shí)的異常。
在上述中我們分別提到了三種throw,分別是Throwable,Throws以及throw,那么到底三者有什么區(qū)別?
Throwable:是指在在Java.lang包中的一個(gè)類,其包含了所有的異常和錯誤,其中類Error和Exception 是它
的子類。
Thows:是指在解決編譯時(shí)異常,將方法中異常拋給上一級,在方法后面要加Throw Exception來進(jìn)行拋。
throw:是指在自定義異常時(shí),如果方法出現(xiàn)異常,那么將作為引用方法的對象拋出。即拋出異常。
希望對您有所幫助!~
1、五種常見的異常:ClassCastException(類轉(zhuǎn)換異常)、IndexOutOfBoundsException(數(shù)組越界異常)、NullPointerException(空指針異常)、ArrayStoreException(數(shù)據(jù)存儲異常,操作數(shù)組時(shí)類型不一致)、BufferOverflowException(還有IO操作的,緩沖溢出異常)。
2、java運(yùn)行時(shí)異常是可能在java虛擬機(jī)正常工作時(shí)拋出的異常。java提供了兩種異常機(jī)制。一種是運(yùn)行時(shí)異常(RuntimeExepction),一種是檢查式異常(checked execption)。
檢查式異常:我們經(jīng)常遇到的IO異常及sql異常就屬于檢查式異常。對于這種異常,java編譯器要求我們必須對出現(xiàn)的這些異常進(jìn)行catch 所以 面對這種異常不管我們是否愿意,只能自己去寫一堆catch來捕捉這些異常。
運(yùn)行時(shí)異常:我們可以不處理。當(dāng)出現(xiàn)這樣的異常時(shí),總是由虛擬機(jī)接管。比如:我們從來沒有人去處理過NullPointerException異常,它就是運(yùn)行時(shí)異常,并且這種異常還是最常見的異常之一。
擴(kuò)展資料:
Java特點(diǎn)
Java看起來設(shè)計(jì)得很像C++,但是為了使語言小和容易熟悉,設(shè)計(jì)者們把C++語言中許多可用的特征去掉了,這些特征是一般程序員很少使用的。例如,Java不支持go to語句,代之以提供break和continue語句以及異常處理。Java還剔除了C++的操作符過載和多繼承特征,并且不使用主文件,免去了預(yù)處理程序。
因?yàn)镴ava沒有結(jié)構(gòu),數(shù)組和串都是對象,所以不需要指針。Java能夠自動處理對象的引用和間接引用,實(shí)現(xiàn)自動的無用單元收集,使用戶不必為存儲管理問題煩惱,能更多的時(shí)間和精力花在研發(fā)上。
參考資料:百度百科-Java
作為一只敬業(yè)的程序員,就是不能接受我的編程出現(xiàn)bug!可見我們對bug是如此的深惡痛覺!它已成為我們職業(yè)生涯中的攔路虎,所以今天精心為大家總結(jié)一下Java中常見的幾種異常,望大家多多注意。
1、java.lang.NullPointerException(空指針異常)
調(diào)用了未經(jīng)初始化的對象或者是不存在的對象。經(jīng)常出現(xiàn)在創(chuàng)建圖片,調(diào)用數(shù)組這些操作中,比如圖片未經(jīng)初始化,或者圖片創(chuàng)建時(shí)的路徑錯誤等等。對數(shù)組操作中出現(xiàn)空指針, 即把數(shù)組的初始化和數(shù)組元素的初始化混淆起來了。數(shù)組的初始化是對數(shù)組分配需要的空間,而初始化后的數(shù)組,其中的元素并沒有實(shí)例化, 依然是空的,所以還需要對每個(gè)元素都進(jìn)行初始化(如果要調(diào)用的話)。
2、 java.lang.ClassNotFoundException指定的類不存在
這里主要考慮一下類的名稱和路徑是否正確即可,通常都是程序試圖通過字符串來加載某個(gè)類時(shí)可能引發(fā)異常。比如:調(diào)用Class.forName();或者調(diào)用ClassLoad的finaSystemClass();或者LoadClass();
3、 java.lang.NumberFormatException字符串轉(zhuǎn)換為數(shù)字異常
當(dāng)試圖將一個(gè)String轉(zhuǎn)換為指定的數(shù)字類型,而該字符串確不滿足數(shù)字類型要求的格式時(shí),拋出該異常.如現(xiàn)在講字符型的數(shù)據(jù)“123456”轉(zhuǎn)換為數(shù)值型數(shù)據(jù)時(shí),是允許的。但是如果字符型數(shù)據(jù)中包含了非數(shù)字型的字符,如123#56,此時(shí)轉(zhuǎn)換為數(shù)值型時(shí)就會出現(xiàn)異常。系統(tǒng)就會捕捉到這個(gè)異常,并進(jìn)行處理。
4、java.lang.IndexOutOfBoundsException數(shù)組下標(biāo)越界異常
查看調(diào)用的數(shù)組或者字符串的下標(biāo)值是不是超出了數(shù)組的范圍,一般來說,顯示(即直接用常數(shù)當(dāng)下標(biāo))調(diào)用不太容易出這樣的錯,但隱式(即用變量表示下標(biāo))調(diào)用就經(jīng)常出錯了,還有一種情況,是程序中定義的數(shù)組的長度是通過某些特定方法決定的,不是事先聲明的,這個(gè)時(shí)候先查看一下數(shù)組的length,以免出現(xiàn)這個(gè)異常。
5、java.lang.IllegalArgumentException方法的參數(shù)錯誤
比如g.setColor(int red,int green,int blue)這個(gè)方法中的三個(gè)值,如果有超過255的也會出現(xiàn)這個(gè)異常,因此一旦發(fā)現(xiàn)這個(gè)異常,我們要做的,就是趕緊去檢查一下方法調(diào)用中的參數(shù)傳遞是不是出現(xiàn)了錯誤。
6、java.lang.IllegalAccessException沒有訪問權(quán)限
當(dāng)應(yīng)用程序要調(diào)用一個(gè)類,但當(dāng)前的方法即沒有對該類的訪問權(quán)限便會出現(xiàn)這個(gè)異常。對程序中用了Package的情況下要注意這個(gè)異常。
7、java.lang.ArithmeticException數(shù)學(xué)運(yùn)算異常
當(dāng)算術(shù)運(yùn)算中出現(xiàn)了除以零這樣的運(yùn)算就會出這樣的異常。
8、java.lang.ClassCastException數(shù)據(jù)類型轉(zhuǎn)換異常
當(dāng)試圖將對某個(gè)對象強(qiáng)制執(zhí)行向下轉(zhuǎn)型,但該對象又不可轉(zhuǎn)換又不可轉(zhuǎn)換為其子類的實(shí)例時(shí)將引發(fā)該異常,如下列代碼。
Object obj = new Integer(0);
String str = obj;
9、 java.lang.FileNotFoundException文件未找到異常
當(dāng)程序試圖打開一個(gè)不存在的文件進(jìn)行讀寫時(shí)將會引發(fā)該異常。該異常由FileInputStream,FileOutputStream,RandomAccessFile的構(gòu)造器聲明拋出,即使被操作的文件存在,但是由于某些原因不可訪問,比如打開一個(gè)只讀文件進(jìn)行寫入,這些構(gòu)造方法仍然會引發(fā)異常。
10、java.lang.ArrayStoreException數(shù)組存儲異常
當(dāng)試圖將類型不兼容類型的對象存入一個(gè)Object[]數(shù)組時(shí)將引發(fā)異常,如
Object[] obj = new String[3]
obj[0] = new Integer(0);
11、java.lang.NoSuchMethodException方法不存在異常
當(dāng)程序試圖通過反射來創(chuàng)建對象,訪問(修改或讀取)某個(gè)方法,但是該方法不存在就會引發(fā)異常。
12、 java.lang.NoSuchFiledException方法不存在異常
當(dāng)程序試圖通過反射來創(chuàng)建對象,訪問(修改或讀取)某個(gè)filed,但是該filed不存在就會引發(fā)異常。
13、 java.lang.EOFException文件已結(jié)束異常
當(dāng)程序在輸入的過程中遇到文件或流的結(jié)尾時(shí),引發(fā)異常。因此該異常用于檢查是否達(dá)到文件或流的結(jié)尾
14、java.lang.InstantiationException實(shí)例化異常
當(dāng)試圖通過Class的newInstance()方法創(chuàng)建某個(gè)類的實(shí)例,但程序無法通過該構(gòu)造器來創(chuàng)建該對象時(shí)引發(fā)。Class對象表示一個(gè)抽象類,接口,數(shù)組類,基本類型 。該Class表示的類沒有對應(yīng)的構(gòu)造器。
15、java.lang.InterruptedException被中止異常
當(dāng)某個(gè)線程處于長時(shí)間的等待、休眠或其他暫停狀態(tài),而此時(shí)其他的線程通過Thread的interrupt方法終止該線程時(shí)拋出該異常。
16、java.lang.CloneNotSupportedException 不支持克隆異常
當(dāng)沒有實(shí)現(xiàn)Cloneable接口或者不支持克隆方法時(shí),調(diào)用其clone()方法則拋出該異常。
17、java.lang.OutOfMemoryException 內(nèi)存不足錯誤
當(dāng)可用內(nèi)存不足以讓Java虛擬機(jī)分配給一個(gè)對象時(shí)拋出該錯誤。
18、java.lang.NoClassDefFoundException 未找到類定義錯誤
當(dāng)Java虛擬機(jī)或者類裝載器試圖實(shí)例化某個(gè)類,而找不到該類的定義時(shí)拋出該錯誤。
違背安全原則異常:SecturityException
操作數(shù)據(jù)庫異常:SQLException
輸入輸出異常:IOException
通信異常:SocketException
以上便是Java常見的幾種異常,希望各位同學(xué)都能編譯出完美的代碼,笑隱竹林中!編碼bug,江湖永無相見!
Java.lang.NullPointerException
這個(gè)異常大家肯定都經(jīng)常碰到,異常的解釋是"程序遇上了空指針",簡單地說就是調(diào)用了未經(jīng)初始化的對象或者是不存在的對象,這個(gè)錯誤經(jīng)常出現(xiàn)在創(chuàng)建圖片,調(diào)用數(shù)組這些操作中,比如圖片未經(jīng)初始化,或者圖片創(chuàng)建時(shí)的路徑錯誤等等。對數(shù)組操作中出現(xiàn)空指針,很多情況下是一些剛開始學(xué)習(xí)編程的朋友常犯的錯誤,即把數(shù)組的初始化和數(shù)組元素的初始化混淆起來了。數(shù)組的初始化是對數(shù)組分配需要的空間,而初始化后的數(shù)組,其中的元素并沒有實(shí)例化,依然是空的,所以還需要對每個(gè)元素都進(jìn)行初始化(假如要調(diào)用的話)
2. java.lang.ClassNotFoundException
這個(gè)異常是很多原本在JB等開發(fā)環(huán)境中開發(fā)的程序員,把JB下的程序包放在WTk下編譯經(jīng)常出現(xiàn)的問題,異常的解釋是"指定的類不存在",這里主要考慮一下類的名稱和路徑是否正確即可,假如是在JB下做的程序包,一般都是默認(rèn)加上Package的,所以轉(zhuǎn)到WTK下后要注重把Package的路徑加上。
3. java.lang.ArithmeticException
這個(gè)異常的解釋是"數(shù)學(xué)運(yùn)算異常",比如程序中出現(xiàn)了除以零這樣的運(yùn)算就會出這樣的異常,對這種異常,大家就要好好檢查一下自己程序中涉及到數(shù)學(xué)運(yùn)算的地方,公式是不是有不妥了。
4. java.lang.ArrayIndexOutOfBoundsException
這個(gè)異常相信很多朋友也經(jīng)常碰到過,異常的解釋是"數(shù)組下標(biāo)越界",現(xiàn)在程序中大多都有對數(shù)組的操作,因此在調(diào)用數(shù)組的時(shí)候一定要認(rèn)真檢查,看自己調(diào)用的下標(biāo)是不是超出了數(shù)組的范圍,一般來說,顯示(即直接用常數(shù)當(dāng)下標(biāo))調(diào)用不太輕易出這樣的錯,但隱式(即用變量表示下標(biāo))調(diào)用就經(jīng)常出錯了,還有一種情況,是程序中定義的數(shù)組的長度是通過某些特定方法決定的,不是事先聲明的,這個(gè)時(shí)候,最好先查看一下數(shù)組的length,以免出現(xiàn)這個(gè)異常。
5. java.lang.IllegalAccessException
這個(gè)異常的解釋是"沒有訪問權(quán)限",當(dāng)應(yīng)用程序要調(diào)用一個(gè)類,但當(dāng)前的方法即沒有對該類的訪問權(quán)限便會出現(xiàn)這個(gè)異常。對程序中用了Package的情況下要注重這個(gè)異常。
網(wǎng)頁標(biāo)題:java常見的異常代碼,Java異常代碼
標(biāo)題URL:http://chinadenli.net/article16/dsshjdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、App設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)公司、品牌網(wǎng)站設(shè)計(jì)、自適應(yīng)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)