java為什麼有編譯時異常
『壹』 常見java運行時異常有哪些
1,java.lang.NullPointerException
這個異常的解釋是 "程序遇上了空指針 ",簡單地說就是調用了未經初始化的對象或者是不存在的對象,這個錯誤經常出現在創建圖片,調用數組這些操作中,比如圖片未經初始化,或者圖片創建時的路徑錯誤等等。
2,java.lang.ClassNotFoundException
異常的解釋是"指定的類不存在",這里主要考慮一下類的名稱和路徑是否正確即可
3,java.lang.
這個異常的解釋是"數組下標越界",現在程序中大多都有對數組的操作,因此在調用數組的時候一定要認真檢查,看自己調用的下標是不是超出了數組的范圍,一般來說,顯示(即直接用常數當下標)調用不太容易出這樣的錯,但隱式(即用變數表示下標)調用就經常出錯了.
4,java.lang.NoSuchMethodError
方法不存在錯誤。當應用試圖調用某類的某個方法,而該類的定義中沒有該方法的定義時拋出該錯誤。
5,java.lang.IndexOutOfBoundsException
索引越界異常。當訪問某個序列的索引值小於0或大於等於序列大小時,拋出該異常。
6,java.lang.NumberFormatException
數字格式異常。當試圖將一個String轉換為指定的數字類型,而該字元串確不滿足數字類型要求的格式時,拋出該異常。
7,java.sql.SQLException
Sql語句執行異常
8,java.io.IOException
輸入輸出異常
9,java.lang.IllegalArgumentException
方法參數錯誤
10java.lang.IllegalAccessException
無訪問許可權異常
(1)java為什麼有編譯時異常擴展閱讀:
Java技術應用領域:
1、Android應用
許多的 Android應用都是Java程序員開發者開發。雖然 Android運用了不同的JVM以及不同的封裝方式,但是代碼還是用Java語言所編寫。相當一部分的手機中都支持JAVA游戲,這就使很多非編程人員都認識了JAVA。
2、在金融業應用的伺服器程序
Java在金融服務業的應用非常廣泛,很多第三方交易系統、銀行、金融機構都選擇用Java開發,因為相對而言,Java較安全 。大型跨國投資銀行用Java來編寫前台和後台的電子交易系統,結算和確認系統,數據處理項目以及其他項目。
3、網站
Java 在電子商務領域以及網站開發領域占據了一定的席位。開發人員可以運用許多不同的框架來創建web項目,SpringMVC,Struts2.0以及frameworks。即使是簡單的 servlet,jsp和以struts為基礎的網站在政府項目中也經常被用到。例如醫療救護、保險、教育、國防以及其他的不同部門網站都是以Java為基礎來開發的。
4、嵌入式領域
Java在嵌入式領域發展空間很大。在這個平台上,只需130KB就能夠使用Java技術(在智能卡或者感測器上)。
5、大數據技術
Hadoop以及其他大數據處理技術很多都是用Java,例如Apache的基於Java的HBase和Accumulo以及 ElasticSearchas。
6、高頻交易的空間
Java平台提高了這個平台的特性和即使編譯,他同時也能夠像 C++ 一樣傳遞數據。正是由於這個原因,Java成為的程序員編寫交易平台的語言,因為雖然性能不比C++,但開發人員可以避開安全性,可移植性和可維護性等問題。
7、科學應用
Java在科學應用中是很好選擇,包括自然語言處理。最主要的原因是因為Java比C++或者其他語言相對其安全性、便攜性、可維護性以及其他高級語言的並發性更好。
『貳』 java 編譯異常
錯誤代碼:400 400錯誤是由於不正確的請求造成的,說明正在搜索的網頁可能已經刪除、更名或暫時不可用。 錯誤代碼:401.1 401.1錯誤是由於登陸失敗造成的,說明沒有許可權查看該目錄或網頁。 錯誤代碼:401.2 401.2錯誤是由於伺服器配置問題而導致登陸失敗,由於伺服器端腳本未能正確發送 WWW 身份驗證頭文件欄位。如果要通過 Active Server Pages 腳本完成此項任務,可以使用"Response"對象的"AddHeader"方法來要求客戶端用特定身份驗證方法訪問資源。 錯誤代碼:401.3 401.3錯誤是由於資源上的 ACL 導致未被授權而無權訪問網頁或目錄。 錯誤代碼:401.4 401.4錯誤是由於篩選器導致授權失敗。如果Web 伺服器安裝了篩選器程序以檢查連接到伺服器的用戶。該篩選器程序能夠禁止通過連接到伺服器的身份驗證來訪問資源。 錯誤代碼:401.5 401.5錯誤是由於 ISAPI/CGI 應用程序導致授權失敗。如果所要訪問的 Web 伺服器地址上安裝了 ISAPI 或 CGI 程序用於在繼續執行之前檢驗用戶證書。該程序能夠禁止通過連接到伺服器的身份驗證證書來訪問資源。 錯誤代碼:403.1 403.1錯誤是由於"執行"訪問被禁止而造成的,若試圖從目錄中執行 CGI、ISAPI 或其他可執行程序,但該目錄不允許執行程序時便會出現此種錯誤。 錯誤代碼:403.2 403.2錯誤是由於"讀取"訪問被禁止而造成的。導致此錯誤是由於沒有可用的默認網頁並且沒有對目錄啟用目錄瀏覽,或者要顯示的 HTML 網頁所駐留的目錄僅標記為"可執行"或"腳本"許可權。 錯誤代碼:403.3 403.3錯誤是由於"寫入"訪問被禁止而造成的,當試圖將文件上載到目錄或在目錄中修改文件,但該目錄不允許"寫"訪問時就會出現此種錯誤。 錯誤代碼:403.4 403.4錯誤是由於要求SSL而造成的,您必須在要查看的網頁的地址中使用"https"。 錯誤代碼:403.5 403.5錯誤是由於要求使用 128 位加密演算法的 Web 瀏覽器而造成的,如果您的瀏覽器不支持128位加密演算法就會出現這個錯誤,您可以連接微軟網站進行瀏覽器升級。 錯誤代碼:403.6 403.6錯誤是由於IP 地址被拒絕而造成的。如果伺服器中有不能訪問該站點的 IP 地址列表,並且您使用的 IP 地址在該列表中時您就會返回這條錯誤信息。 錯誤代碼:403.7 403.7錯誤是因為要求客戶證書,當需要訪問的資源要求瀏覽器擁有伺服器能夠識別的安全套接字層 (SSL) 客戶證書時會返回此種錯誤。 錯誤代碼:403.8 403.8錯誤是由於禁止站點訪問而造成的,若伺服器中有不能訪問該站點的 DNS 名稱列表,而您使用的 DNS 名稱在列表中時就會返回此種信息。請注意區別403.6與403.8錯誤。 錯誤代碼:403.9 403.9錯誤是由於連接的用戶過多而造成的,由於Web 伺服器很忙,因通訊量過多而無法處理請求時便會返回這條錯誤。 錯誤代碼:403.10 403.10錯誤是由於無效配置而導致的錯誤,當您試圖從目錄中執行 CGI、ISAPI 或其他可執行程序,但該目錄不允許執行程序時便會返回這條錯誤。 錯誤代碼:403.11 403.11錯誤是由於密碼更改而導致無權查看頁面。 錯誤代碼:403.12 403.12錯誤是由於映射器拒絕訪問而造成的。若要查看的網頁要求使用有效的客戶證書,而您的客戶證書映射沒有許可權訪問該 Web 站點時就會返回映射器拒絕訪問的錯誤。 錯誤代碼:403.13 403.13錯誤是由於需要查看的網頁要求使用有效的客戶證書而使用的客戶證書已經被吊銷,或者無法確定證書是否已吊銷造成的。 錯誤代碼:403.15 403.15錯誤是由於客戶訪問許可過多而造成的,當伺服器超出其客戶訪問許可限制時會返回此條錯誤。 錯誤代碼:403.16 403.16錯誤是由於客戶證書不可信或者無效而造成的。 錯誤代碼:403.17 403.17錯誤是由於客戶證書已經到期或者尚未生效而造成的。 錯誤代碼:404.1 404.1錯誤表明所訪問 Web 站點的 IP 地址不接受對埠(請求的來源埠)的請求。一般來說,404.1 錯誤只會出現在具有多個 IP 地址的計算機上。如果在特定 IP 地址/埠組合上收到客戶請求,而且在特定的埠上 IP 地址並沒有設置為偵聽,則 IIS 將返回 404.1 HTTP 錯誤。例如,如果一台計算機有兩個 IP 地址,而只將其中一個 IP 地址配置為在埠 80 上偵聽,則其它 IP 地址從埠 80 收到的任何請求都將導致 IIS 返回 404.1 錯誤。只應在服務級設置這一錯誤,因為只有當伺服器上使用多個 IP 地址時它才返回給客戶。 錯誤代碼:404b 404b錯誤是由於無法找到文件而造成的,通常是由於正在搜索的網頁可能已經刪除、更名或暫時不可用。 錯誤代碼:405 405錯誤是由於資源被禁止而導致的網頁地址不正確,因此要尋找的網頁無法顯示。 錯誤代碼:406 406錯誤是由於瀏覽器無法打開正在尋找的資源而導致的錯誤。 錯誤代碼:407 407錯誤是由於代理伺服器必須先驗證身份,然後才處理請求。 錯誤代碼:410 410錯誤要尋找的網頁已被永久刪除而導致的,這意味著資源永遠無法使用。 錯誤代碼:412 412錯誤是由於要查看的網頁設置有先決條件,因此該請求無法完成。一般是網頁中有一個或多個請求標題欄位中具有先決條件,這些欄位經伺服器測試後被認為是"FALSE"。客戶端為當前資源的 meta 信息(頭文件欄位數據)設置了先決條件,以便防止請求的方法被用於指定資源外的其他資源。 錯誤代碼:414 414錯誤是由於請求的 URI 太長,伺服器拒絕處理請求而造成的。一般的可能性有: 1)客戶端錯誤地將 POST 請求轉換為帶有長查詢信息的 GET 請求。 2)或者是客戶端遇到重定向問題(例如,重定向 URL 的前綴指向自身的後綴)。 3)伺服器遭到客戶端的攻擊,該客戶端試圖利用那些使用定長緩沖來讀取或控制請求 URI 的伺服器上的安全漏洞。 錯誤代碼:500 500錯誤是由於內部伺服器錯誤造成的。 錯誤代碼:500.11 500.11錯誤是由於伺服器關閉而造成的資源無法訪問,Web 站點關閉期間無法處理請求。 錯誤代碼:500.12 500.12錯誤是由於應用程序重新啟動而造成的資源暫時無法訪問,Web站點重新啟動期間無法處理請求。 錯誤代碼:500.13 500.13錯誤是由於伺服器太忙而造成的,此時無法處理請求。通訊量超出 Web 站點的能力。 錯誤代碼:500.14 500.14錯誤是由於應用程序無效而造成的,部分 Web 站點不可用。Web 站點應用程序配置存在問題,無法處理請求。 錯誤代碼:500.15 500.15錯誤是由於請求了不不允許請求的 global.asa而造成的,你可以編輯"地址"欄中的網址,刪除 global.asa,然後按 Enter。來解決這個問題。 錯誤代碼:502 502錯誤是由於網關錯誤而造成的,當作為網關或代理的伺服器與上層內容伺服器聯絡時,收到無效的響應時就會出現502錯誤。 錯誤代碼:500-100.asp 500-100.asp錯誤是指ASP錯誤,默認情況下,"默認 Web 站點"及其所有應用程序都將 ASP 錯誤進程傳送到 500-100.asp 文件;但是,用戶創建的任何新 Web 站點或其應用程序都將 500.100 錯誤進程傳送到默認的(不是自定義的)錯誤文件。如果要為 .asp 文件開發附加的錯誤進程,可以將 500-100 錯誤映射到 .asp 文件,或者創建自己的錯誤進程 .asp 文件。 500-100.asp 文件處理 .asp 文件編譯和運行期間發生的任何錯誤。當發生 ASP 錯誤時,IIS 返回 500-100.asp 文件並附帶詳細的錯誤信息,如發生錯誤的行號和對錯誤的描述。 如果文件 500-100.asp 本身包含 ASP 錯誤,ASP 就不會返回另一個 500-100.asp 文件;這樣,報告錯誤時就好象根本沒有與 500-100 錯誤對應的自定義錯誤文件似的。 如果錯誤處理文件(默認是 500-100.asp)包含運行時錯誤,則只顯示此錯誤,而不考慮請求的 .asp 文件中的錯誤類型。如果錯誤處理文件有預處理和編輯錯誤,則在瀏覽器中顯示這兩種錯誤(即,顯示 500-100.asp 文件中的錯誤和請求的 .asp 文件中的錯誤)。 4.3. 枚舉聲明 java.lang.Thread.State 線程有以下幾種狀態:NEW(已創建但尚未開始執行)、RUNNABLE(正在Java虛擬機中執行)、BLOCKED(阻塞中:正等待獲得監控鎖)、WAITING(等待:無條件等候其他線程執行完畢,直到接收到喚醒通知)、TIMED_WAITING(限時等待:等候其他線程執行完畢,直到接收到喚醒通知或等待時間超過了時限)、TERMINATED(終止:線程已經退出)。4.4. 異常 java.lang.ArithmeticException 算術條件異常。譬如:整數除零等。 java.lang. 數組索引越界異常。當對數組的索引值為負數或大於等於數組大小時拋出。 java.lang.ArrayStoreException 數組存儲異常。當向數組中存放非數組聲明類型對象時拋出。 java.lang.ClassCastException 類造型異常。假設有類A和B(A不是B的父類或子類),O是A的實例,那麼當強制將O構造為類B的實例時拋出該異常。該異常經常被稱為強制類型轉換異常。 java.lang.ClassNotFoundException 找不到類異常。當應用試圖根據字元串形式的類名構造類,而在遍歷CLASSPAH之後找不到對應名稱的class文件時,拋出該異常。 java.lang.CloneNotSupportedException 不支持克隆異常。當沒有實現Cloneable介面或者不支持克隆方法時,調用其clone()方法則拋出該異常。 java.lang. 枚舉常量不存在異常。當應用試圖通過名稱和枚舉類型訪問一個枚舉對象,但該枚舉對象並不包含常量時,拋出該異常。 java.lang.Exception 根異常。用以描述應用程序希望捕獲的情況。 java.lang.IllegalAccessException 違法的訪問異常。當應用試圖通過反射方式創建某個類的實例、訪問該類屬性、調用該類方法,而當時又無法訪問類的、屬性的、方法的或構造方法的定義時拋出該異常。 java.lang.IllegalMonitorStateException 違法的監控狀態異常。當某個線程試圖等待一個自己並不擁有的對象(O)的監控器或者通知其他線程等待該對象(O)的監控器時,拋出該異常。 java.lang.IllegalStateException 違法的狀態異常。當在Java環境和應用尚未處於某個方法的合法調用狀態,而調用了該方法時,拋出該異常。 java.lang.IllegalThreadStateException 違法的線程狀態異常。當縣城尚未處於某個方法的合法調用狀態,而調用了該方法時,拋出異常。 java.lang.IndexOutOfBoundsException 索引越界異常。當訪問某個序列的索引值小於0或大於等於序列大小時,拋出該異常。 java.lang.InstantiationException 實例化異常。當試圖通過newInstance()方法創建某個類的實例,而該類是一個抽象類或介面時,拋出該異常。 java.lang.InterruptedException 被中止異常。當某個線程處於長時間的等待、休眠或其他暫停狀態,而此時其他的線程通過Thread的interrupt方法終止該線程時拋出該異常。 java.lang.NegativeArraySizeException 數組大小為負值異常。當使用負數大小值創建數組時拋出該異常。 java.lang.NoSuchFieldException 屬性不存在異常。當訪問某個類的不存在的屬性時拋出該異常。 java.lang.NoSuchMethodException 方法不存在異常。當訪問某個類的不存在的方法時拋出該異常。 java.lang.NullPointerException 空指針異常。當應用試圖在要求使用對象的地方使用了null時,拋出該異常。譬如:調用null對象的實例方法、訪問null對象的屬性、計算null對象的長度、使用throw語句拋出null等等。 java.lang.NumberFormatException 數字格式異常。當試圖將一個String轉換為指定的數字類型,而該字元串確不滿足數字類型要求的格式時,拋出該異常。 java.lang.RuntimeException 運行時異常。是所有Java虛擬機正常操作期間可以被拋出的異常的父類。 java.lang.SecurityException 安全異常。由安全管理器拋出,用於指示違反安全情況的異常。 java.lang. 字元串索引越界異常。當使用索引值訪問某個字元串中的字元,而該索引值小於0或大於等於序列大小時,拋出該異常。 java.lang.TypeNotPresentException 類型不存在異常。當應用試圖以某個類型名稱的字元串表達方式訪問該類型,但是根據給定的名稱又找不到該類型是拋出該異常。該異常與ClassNotFoundException的區別在於該異常是unchecked(不被檢查)異常,而ClassNotFoundException是checked(被檢查)異常。 java.lang.UnsupportedOperationException 不支持的方法異常。指明請求的方法不被支持情況的異常。
『叄』 java編譯異常有哪幾個
Exception下除了RuntimeException及其子類以外的所有子類,JDK文檔上說,已知道的直接子類有:
『肆』 java編譯中出現了Exception in thread 「main" java.lang.UnsupportedClassVersionError
這個問題確實是由較高版本的JDK編譯的java class文件試圖在較低版本的JVM上運行產生的錯誤。
1、解決措施就是保證jvm(java命令)和jdk(javac命令)版本一致。如果是linux版本,則在命令行中分別輸入java -version和javac -version命令來查看版本是否一致。這里假設都是1.7版本。
2、如果都一致,但還是解決不了問題,那麼你肯定不是直接在命令行中用javac來編譯的,而是用類似於eclipse、netbeans這樣的編譯器來編譯的。因為很多編譯器都自帶javac,而不是採用操作系統中的編譯器。如果你的編譯器是eclipse的話,那麼需要在項目的屬性里設置jdk版本,方法是右擊項目-->properties-->java compiler --> Enable project specific settings -->將compiler compliance level設置為1.7,也就是與jvm一致的版本(在命令行中java -version所顯示的版本)。
綜上,如果你是用編譯器來編譯的話,請首先確保編譯器自帶的jdk版本是否和操作系統中的java版本一致。
見下圖:
『伍』 java程序編譯的時候這個出現異常怎麼處理
Java源碼文件這些文件可以是任意字元編碼的,在Java的Class文件里存儲的字元串是UTF-8編碼的,所以如果在代碼中有中文字元的話,就會導致亂碼。當然,這只是眾多原因中的一種,所以把編碼設置統一是避免出現亂碼的解決辦法。
工具:
eclipse
方法如下:
點擊window--Preferences
選擇General--WorkSpace,選擇Default(GBK)即可
附:也可以選擇Other,從Other中選擇程序需要的編碼格式。
『陸』 java文件編譯的時候 報出異常,求解釋。
一個java文件中可以共存多個class類,但只能有一個 public class 類名 ,而這個類名必須和這個Java文件的文件名稱一樣。你上述的就是因為Java文件和其中的public class 類名不匹配導致的
『柒』 java語言中什麼叫做編譯錯誤
就是你用javac命令將源代碼(.java)文件翻譯成位元組碼(.class)文件時產生的錯誤。
比如,變數名不符合規定,變數沒定義,關鍵字拼寫錯誤等等。。。
java的編譯器(javac)會根據java語法規定做一些檢查,不符合規定的就不通過編譯。
編譯錯誤,是相對於運行時錯誤而言的。
運行時錯誤,是你用java命令運行時會出現的錯誤,一般會拋出異常。
『捌』 Java之運行時異常與編譯時異常區別
Java中用2種方法處理異常:
1.在發生異常的地方直接處理;
2.將異常拋給調用者,讓調用者處理。
Java常見的異常:
(1)編譯時異常:Java.lang.Exception
(2)運行期異常:Java.lang.RuntimeException
Java.lang.Exception和Java.lang.Error繼承自Java.lang.Throwable;
Java.lang.RuntimeException繼承自Java.lang.Exception.
編譯時異常: 程序正確,但因為外在的環境條件不滿足引發。例如:用戶錯誤及I/O問題----程序試圖打開一個並不存在的遠程Socket埠。這不是程序本身的邏輯錯誤,而很可能是遠程機器名字錯誤(用戶拼寫錯誤)。對商用軟體系統,程序開發者必須考慮並處理這個問題。Java編譯器強制要求處理這類異常,如果不捕獲這類異常,程序將不能被編譯。
運行期異常: 這意味著程序存在bug,如數組越界,0被除,入參不滿足規范.....這類異常需要更改程序來避免,Java編譯器強制要求處理這類異常。
『玖』 為什麼java編譯時異常需要try-catch處理,改掉不好嗎
異常有很多種類,爆紅屬於一種
代碼有一個規范,自己寫的代碼
過兩天去看,有時候就看不明白了
項目上線也是一樣,沒有人敢保證
自己的代碼沒有bug,所以報錯機制
提供了一個查閱的平台,方便知道
哪裡出錯了,如何去修改
代碼寫出來只是第一步,後期維護
工作也是必要的