看是發(fā)生了什么錯誤,大多數(shù)錯誤都可以通過改寫原編碼來解決。
成都創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計、做網(wǎng)站與策劃設(shè)計,大關(guān)網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:大關(guān)等地區(qū)。大關(guān)做網(wǎng)站價格咨詢:028-86922220
程序的錯誤可以抽象分為三類:語法錯誤、運行錯誤和邏輯錯誤。
1、語法錯誤
是指由于編程中輸入不符合語法規(guī)則而產(chǎn)生的。程序編譯就通不過,程序不能運行起來。此類錯誤最簡單,調(diào)試起來比較容易
例如:表達式不完整、缺少必要的標點符號、關(guān)鍵字輸入錯誤、數(shù)據(jù)類型不匹配、循環(huán)語句或選擇語句的關(guān)鍵字不匹配等。通常,編譯器對程序進行編譯的過程中,會把檢測到的語法錯誤以提示的方式列舉出來,又稱為編譯錯誤。
語法錯誤的調(diào)試,則可以由集成開發(fā)環(huán)境提供的調(diào)試功能來實現(xiàn),在程序進行編譯時,編譯器會對程序中的語法錯誤進行診斷。
編譯診斷的語法錯誤分為3中:致命錯誤、錯誤和警告。
(1)致命錯誤:這個錯誤大多是編譯程序內(nèi)部發(fā)生的錯誤,發(fā)生這類錯誤時,編譯被迫中止,只能重新啟動編譯程序,但是這類錯誤很少發(fā)生,為了安全,編譯前最好還是先保存程序。
(2)錯誤:這個錯誤通常是在編譯時,語法不當(dāng)所引起的。例如:括號不匹配,變量未聲明等。產(chǎn)生這類錯誤時,編譯程序會出現(xiàn)報錯提示,我們根據(jù)提示對源程序進行修改即可。這類錯誤是出現(xiàn)最多的。
(3)警告:是指被編譯程序懷疑有錯,但是不確定,有時可強行通過。例如:沒有加void聲明的主函數(shù)沒有返回值,double數(shù)據(jù)被轉(zhuǎn)換為float類型等。這些警告中有些會導(dǎo)致錯誤,有些可以通過。
常規(guī)解決方法:此類錯誤一般程序編譯系統(tǒng)會自動提示相應(yīng)的錯誤地點和錯誤原因,比如哪一行代碼少了個括號等諸如此類的提示,常見的錯誤,看懂直接改正即可,如果是看不懂原因,可以將錯誤提示信息輸入搜索引擎查找一下,一般都能找到具體的解決辦法?;蛘哂行┚幊唐脚_會本身提供一個本地或者在線的信息庫,提供詳細的錯誤原因和解決辦法,比如微軟的.NET開發(fā)平臺。
2、運行錯誤
指程序在運行過程中出現(xiàn)的錯誤。程序通過語法錯誤檢測,但是運行的時候出現(xiàn)錯誤,導(dǎo)致程序被迫終止,此類錯誤有特定的發(fā)生條件,因此能夠準確的定位錯誤代碼段,因而調(diào)試也比較方便。
例如:除法運算時除數(shù)為0?、數(shù)組下標越界、文件打不開、磁盤空間不夠、數(shù)據(jù)庫連接錯誤等。
此類錯誤發(fā)生時,編譯平臺一般也會提示相應(yīng)的信息,對于常規(guī)的錯誤會有比較精確地提示,但有時提示的錯誤原因會比較模糊,但因為此類錯誤一般在程序運行時,只在特定的條件下才會發(fā)生,所以根據(jù)錯誤發(fā)生的條件,能夠大致判斷程序出錯的代碼段,結(jié)合錯誤的原因,也能比較方便的調(diào)試出錯誤。
3、邏輯錯誤
程序運行后,沒有得到設(shè)計者預(yù)期的結(jié)果,這就說明程序存在邏輯錯誤。這種錯誤在語法上是有效的,但是在邏輯上是錯誤的。
程序運行了,也沒有出錯,但是執(zhí)行出來的結(jié)果不是用戶想要的,分為兩種情況:
A、???????能夠看出錯誤:比如查詢工資大于5000的人員名單,卻出現(xiàn)了3000的;
B、???????看不出錯誤,直到因緣際會發(fā)現(xiàn)程序肯定出錯了,后果很嚴重:比如進行一個符合大型運算,把某個常數(shù)輸入錯了,最后的結(jié)果人工無法判斷對錯,又以該結(jié)果進行其它的運算等等,最后發(fā)現(xiàn)錯了誤差過大,就得從頭排查錯誤。
應(yīng)該是注冊表沒刪的原因,你直接刪除文件夾肯定刪不干凈 容易各種遺留問題
天,一個程序這么多錯誤,給你改了,自己對照著看看吧?。?/p>
import java.util.*;
public class A{
public static void main (String args[]){
Scanner reader=new Scanner(System.in);
double y = 0;
double x = 0;
System.out.print("ê?è?x:");
x=reader.nextDouble();
if(x0){
y=-1+2 * x;
System.out.printf("%-8.4f",y);
}
else if(x==0){
System.out.printf("%d",-1);
}
else{
y=-1+3 * x;
System.out.printf("%-8.4f",y);
}
}
}
相信作為程序員的我們在對程序進行編譯過程中經(jīng)常會遇到錯誤,或者在運行過程中出現(xiàn)錯誤,在這里主要跟大家談?wù)劷?jīng)常遇到的一些異常與錯誤,以及解決辦法。
異常是指程序在編譯或運行過程出現(xiàn)的錯誤。
在java.lang包中Throwable包含了所有的異常。
Error (錯誤) 和Exception(異常)
(1)Error(錯誤)
一旦發(fā)生無法修復(fù),但可以避免發(fā)生。
常見錯誤類:
IOError:I/O錯誤,當(dāng)發(fā)生嚴重的I/O錯誤時,拋出此錯誤。
VirtualMachineError?:虛擬機錯誤,當(dāng) Java 虛擬機崩潰或用盡了它繼續(xù)操作所需的資源時,拋出該錯誤。
StackOverflowError:棧內(nèi)存滿了,當(dāng)應(yīng)用程序遞歸太深而發(fā)生堆棧溢出時,拋出該錯誤。
OutofMemoryError:堆內(nèi)存滿了,因為內(nèi)存溢出或沒有可用的內(nèi)存提供給垃圾回收器時,Java 虛擬機無法分配一個對象,這時拋出該異常。
以上是一些常見的錯誤,在Error類中還有一些別的錯誤(參照文件Java.lang.Throwable.Error).
(2)Exception(異常)
一旦發(fā)生,可以捕獲并處理,不會導(dǎo)致程序終止,有時可以避免有時無法避免。
異常的分類:
1.編譯時異常(需要強制處理)?????? 2.運行時異常(不需要強制處理)
常見的異常有:
IOException:輸入輸出流異常
FileNotFoundException:文件找不到的異常
ClassNotFoundException:類找不到的異常
DataFormatException:數(shù)據(jù)格式化異常
NoSuchFieldException:沒有匹配的屬性異常
NoSuchMethodException:沒有匹配的方法異常
SQLException:數(shù)據(jù)庫操作異常
TimeoutException:執(zhí)行超時異常
常見的運行時異常:
RuntimeException:運行時異常
NullPointerException:空指針異常
ArrayIndexOutofBoundsException:數(shù)組越界異
ClassCastException:類型轉(zhuǎn)換異常
IllegalArgumentException:非法的參數(shù)異常
InputMismatchException:輸入不匹配
以上是常見的一些異常,另外還有別的異常,參見文件:Java.lang.Throwable.Exception
既然我們常常會遇到一些異常,那我們?nèi)绾蝸硖幚磉@些異常就是一個急需解決的事情。
(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ā)生異常的結(jié)果進行處理,也可以對運行時異常進行try...catch...
以上就是一些我們處理編譯時異常和運行時異常的方法。
在程序出現(xiàn)異常時,有時候我們可以自定義異常,以便我們能夠發(fā)現(xiàn)是什么異常。
那么如何自定義異常??
1.當(dāng)運行時,程序出現(xiàn)意外,可以拋出異常對象來結(jié)束程序
如:
//拋出運行時異常對象
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;
}
}
例如:
運行結(jié)果:
從結(jié)果可以看出,我們在輸入數(shù)據(jù)的時候出現(xiàn)錯誤,這樣通過自定義異常能夠讓我們更直接快速的找到運行或編譯時的異常。
在上述中我們分別提到了三種throw,分別是Throwable,Throws以及throw,那么到底三者有什么區(qū)別?
Throwable:是指在在Java.lang包中的一個類,其包含了所有的異常和錯誤,其中類Error和Exception 是它
的子類。
Thows:是指在解決編譯時異常,將方法中異常拋給上一級,在方法后面要加Throw Exception來進行拋。
throw:是指在自定義異常時,如果方法出現(xiàn)異常,那么將作為引用方法的對象拋出。即拋出異常。
希望對您有所幫助!~
jdk安裝失敗的話,看看是否已經(jīng)存在jdk了,選擇另外一個路徑試試看。
本文題目:java返回錯誤代碼2的簡單介紹
文章來源:http://www.rwnh.cn/article18/dssdjgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、定制網(wǎng)站、做網(wǎng)站、面包屑導(dǎo)航、移動網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)