相信作為程序員的我們在對程序進行編譯過程中經常會遇到錯誤,或者在運行過程中出現(xiàn)錯誤,在這里主要跟大家談談經常遇到的一些異常與錯誤,以及解決辦法。
萊蕪網站建設公司成都創(chuàng)新互聯(lián),萊蕪網站設計制作,有大型網站制作公司豐富經驗。已為萊蕪超過千家提供企業(yè)網站建設服務。企業(yè)網站搭建\外貿網站制作要多少錢,請找那個售后服務好的萊蕪做網站的公司定做!
異常是指程序在編譯或運行過程出現(xiàn)的錯誤。
在java.lang包中Throwable包含了所有的異常。
Error (錯誤) 和Exception(異常)
(1)Error(錯誤)
一旦發(fā)生無法修復,但可以避免發(fā)生。
常見錯誤類:
IOError:I/O錯誤,當發(fā)生嚴重的I/O錯誤時,拋出此錯誤。
VirtualMachineError?:虛擬機錯誤,當 Java 虛擬機崩潰或用盡了它繼續(xù)操作所需的資源時,拋出該錯誤。
StackOverflowError:棧內存滿了,當應用程序遞歸太深而發(fā)生堆棧溢出時,拋出該錯誤。
OutofMemoryError:堆內存滿了,因為內存溢出或沒有可用的內存提供給垃圾回收器時,Java 虛擬機無法分配一個對象,這時拋出該異常。
以上是一些常見的錯誤,在Error類中還有一些別的錯誤(參照文件Java.lang.Throwable.Error).
(2)Exception(異常)
一旦發(fā)生,可以捕獲并處理,不會導致程序終止,有時可以避免有時無法避免。
異常的分類:
1.編譯時異常(需要強制處理)?????? 2.運行時異常(不需要強制處理)
常見的異常有:
IOException:輸入輸出流異常
FileNotFoundException:文件找不到的異常
ClassNotFoundException:類找不到的異常
DataFormatException:數(shù)據(jù)格式化異常
NoSuchFieldException:沒有匹配的屬性異常
NoSuchMethodException:沒有匹配的方法異常
SQLException:數(shù)據(jù)庫操作異常
TimeoutException:執(zhí)行超時異常
常見的運行時異常:
RuntimeException:運行時異常
NullPointerException:空指針異常
ArrayIndexOutofBoundsException:數(shù)組越界異
ClassCastException:類型轉換異常
IllegalArgumentException:非法的參數(shù)異常
InputMismatchException:輸入不匹配
以上是常見的一些異常,另外還有別的異常,參見文件:Java.lang.Throwable.Exception
既然我們常常會遇到一些異常,那我們如何來處理這些異常就是一個急需解決的事情。
(1) 如何處理編譯時異常?
方法一:將需要處理的代碼塊放在一個try...catch...中
try{
//需要處理異常的代碼
}catch(XXXException ef){
ef.printStackTrace();
}
我們方法一就是要將我們不確定的代碼放入try......catch中,先進行try一下,如果沒有異常,則不會觸發(fā)catch,沒有輸出,一旦出現(xiàn)異常,那么catch就會工作,在catch中捕獲異常信息,根據(jù)異常信息進行補救措施。
如以下代碼:
方法二:在出現(xiàn)異常的方法上直接向上拋出異常,throws
void ff() throws XXXException{
}
將出現(xiàn)的異常的代碼中,放入如上的方法中,就會將異常拋給該方法的上一級,在主函數(shù)上繼續(xù)向上拋,最終拋給JVM java虛擬機,讓JVM來解決該問題。
如代碼:
注意:在catch和throws的時候如果不確定是什么異常,就直接寫一個Exception.
(2) 如何處理運行時異常?
1.一般情況下,運行時異常是不用處理的?
2.在某些情況下,如果對發(fā)生異常的結果進行處理,也可以對運行時異常進行try...catch...
以上就是一些我們處理編譯時異常和運行時異常的方法。
在程序出現(xiàn)異常時,有時候我們可以自定義異常,以便我們能夠發(fā)現(xiàn)是什么異常。
那么如何自定義異常??
1.當運行時,程序出現(xiàn)意外,可以拋出異常對象來結束程序
如:
//拋出運行時異常對象
RuntimeException ef = new RuntimeException("下標越界!index:"+index+" ,size:"+size());
throw ef;
2.對于編譯時異常,同樣可以拋出異常對象
但在方法定義時候必須加上throws
如:
public void test(int t) throws Exception{
if (t 0 || t 100) {
Exception ef = new Exception("數(shù)據(jù)錯誤");
throw ef;
}
}
例如:
運行結果:
從結果可以看出,我們在輸入數(shù)據(jù)的時候出現(xiàn)錯誤,這樣通過自定義異常能夠讓我們更直接快速的找到運行或編譯時的異常。
在上述中我們分別提到了三種throw,分別是Throwable,Throws以及throw,那么到底三者有什么區(qū)別?
Throwable:是指在在Java.lang包中的一個類,其包含了所有的異常和錯誤,其中類Error和Exception 是它
的子類。
Thows:是指在解決編譯時異常,將方法中異常拋給上一級,在方法后面要加Throw Exception來進行拋。
throw:是指在自定義異常時,如果方法出現(xiàn)異常,那么將作為引用方法的對象拋出。即拋出異常。
Java 中最常見的 5 個錯誤:
1、Null 的過度使用
避免過度使用 null 值是一個最佳實踐。例如,更好的做法是讓方法返回空的 array 或者 collection 而不是 null 值,因為這樣可以防止程序拋出 NullPointerException。
2、忽視異常
我們經常對異常置之不理。然而,針對初學者和有經驗的 Java?程序員,最佳實踐仍是處理它們。異常拋出通常是帶有目的性的,因此在大多數(shù)情況下需要記錄引起異常的事件。別小看這件事,如果必要的話,你可以重新拋出它,在一個對話框中將錯誤信息展示給用戶或者將錯誤信息記錄在日志中。至少,為了讓其它開發(fā)者知曉前因后果,你應該解釋為什么沒有處理這個異常。
3、并發(fā)修改異常
這種異常發(fā)生在集合對象被修改,同時又沒有使用 iterator 對象提供的方法去更新集合中的內容。
4、違約
有時候,為了更好地協(xié)作,由標準庫或者第三方提供的代碼必須遵守共同的依賴準則。例如,必須遵守?hashCode和equals的共同約定,從而保證 Java 集合框架中的一系列集合類和其它使用hashCode和equals方法的類能夠正常工作。不遵守約定并不會產生 exception 或者破壞代碼編譯之類的錯誤;它很陰險,因為它隨時可能在毫無危險提示的情況下更改應用程序行為。
5、使用原始類型而不是參數(shù)化的
根據(jù) Java 文檔描述:原始類型要么是非參數(shù)化的,要么是類 R 的(同時也是非繼承 R 父類或者父接口的)非靜態(tài)成員。在 Java 泛型被引入之前,并沒有原始類型的替代類型。Java 從1.5版本開始支持泛型編程,毫無疑問這是一個重要的功能提升。然而,由于向后兼容的原因,這里存在一個陷阱可能會破壞整個類型系統(tǒng)。
HTTP
1xx - 信息提示
這些狀態(tài)代碼表示臨時的響應??蛻舳嗽谑盏匠R?guī)響應之前,應準備接收一個或多個 1xx 響應。 ? 100 - 繼續(xù)。
? 101 - 切換協(xié)議。
2xx - 成功
這類狀態(tài)代碼表明服務器成功地接受了客戶端請求。
? 200 - 確定??蛻舳苏埱笠殉晒Α?/p>
? 201 - 已創(chuàng)建。
? 202 - 已接受。
? 203 - 非權威性信息。
? 204 - 無內容。
? 205 - 重置內容。
? 206 - 部分內容。
3xx - 重定向
客戶端瀏覽器必須采取更多操作來實現(xiàn)請求。例如,瀏覽器可能不得不請求服務器上的不同的頁面,或通過代理服務器重復該請求。 ? 302 - 對象已移動。
? 304 - 未修改。
? 307 - 臨時重定向。
4xx - 客戶端錯誤
發(fā)生錯誤,客戶端似乎有問題。例如,客戶端請求不存在的頁面,客戶端未提供有效的身份驗證信息。 ? 400 - 錯誤的請求。
? 401 - 訪問被拒絕。IIS 定義了許多不同的 401 錯誤,它們指明更為具體的錯誤原因。這些具體的錯誤代碼在瀏覽器中顯示,但不在 IIS 日志中顯示: ? 401.1 - 登錄失敗。
? 401.2 - 服務器配置導致登錄失敗。
? 401.3 - 由于 ACL 對資源的限制而未獲得授權。
? 401.4 - 篩選器授權失敗。
? 401.5 - ISAPI/CGI 應用程序授權失敗。
? 401.7 – 訪問被 Web 服務器上的 URL 授權策略拒絕。這個錯誤代碼為 IIS 6.0 所專用。
? 403 - 禁止訪問:IIS 定義了許多不同的 403 錯誤,它們指明更為具體的錯誤原因: ? 403.1 - 執(zhí)行訪問被禁止。
? 403.2 - 讀訪問被禁止。
? 403.3 - 寫訪問被禁止。
? 403.4 - 要求 SSL。
? 403.5 - 要求 SSL 128。
? 403.6 - IP 地址被拒絕。
? 403.7 - 要求客戶端證書。
? 403.8 - 站點訪問被拒絕。
? 403.9 - 用戶數(shù)過多。
? 403.10 - 配置無效。
? 403.11 - 密碼更改。
? 403.12 - 拒絕訪問映射表。
? 403.13 - 客戶端證書被吊銷。
? 403.14 - 拒絕目錄列表。
? 403.15 - 超出客戶端訪問許可。
? 403.16 - 客戶端證書不受信任或無效。
? 403.17 - 客戶端證書已過期或尚未生效。
? 403.18 - 在當前的應用程序池中不能執(zhí)行所請求的 URL。這個錯誤代碼為 IIS 6.0 所專用。
? 403.19 - 不能為這個應用程序池中的客戶端執(zhí)行 CGI。這個錯誤代碼為 IIS 6.0 所專用。
? 403.20 - Passport 登錄失敗。這個錯誤代碼為 IIS 6.0 所專用。
? 404 - 未找到。 ? 404.0 -(無) – 沒有找到文件或目錄。
? 404.1 - 無法在所請求的端口上訪問 Web 站點。
? 404.2 - Web 服務擴展鎖定策略阻止本請求。
? 404.3 - MIME 映射策略阻止本請求。
? 405 - 用來訪問本頁面的 HTTP 謂詞不被允許(方法不被允許)
? 406 - 客戶端瀏覽器不接受所請求頁面的 MIME 類型。
? 407 - 要求進行代理身份驗證。
? 412 - 前提條件失敗。
? 413 – 請求實體太大。
? 414 - 請求 URI 太長。
? 415 – 不支持的媒體類型。
? 416 – 所請求的范圍無法滿足。
? 417 – 執(zhí)行失敗。
? 423 – 鎖定的錯誤。
5xx - 服務器錯誤
服務器由于遇到錯誤而不能完成該請求。 ? 500 - 內部服務器錯誤。 ? 500.12 - 應用程序正忙于在 Web 服務器上重新啟動。
? 500.13 - Web 服務器太忙。
? 500.15 - 不允許直接請求 Global.asa。
? 500.16 – UNC 授權憑據(jù)不正確。這個錯誤代碼為 IIS 6.0 所專用。
? 500.18 – URL 授權存儲不能打開。這個錯誤代碼為 IIS 6.0 所專用。
? 500.100 - 內部 ASP 錯誤。
? 501 - 頁眉值指定了未實現(xiàn)的配置。
? 502 - Web 服務器用作網關或代理服務器時收到了無效響應。 ? 502.1 - CGI 應用程序超時。
? 502.2 - CGI 應用程序出錯。application.
? 503 - 服務不可用。這個錯誤代碼為 IIS 6.0 所專用。
? 504 - 網關超時。
? 505 - HTTP 版本不受支持。
當前名稱:java常見錯誤代碼,JAVA常見錯誤
文章網址:http://www.rwnh.cn/article36/dsigpsg.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、App設計、搜索引擎優(yōu)化、、微信小程序、網站內鏈
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)