導航:首頁 > 編程語言 > java數據異常處理

java數據異常處理

發布時間:2021-03-07 14:06:08

A. java異常處理

import java.util.Scanner;
public class zero
{
double d1,d2,result;
Scanner sc=new Scanner(System.in);
System.out.println("請輸入被除數:");
d1=sc.nextDouble();
System.out.println("請輸入除數:");
d2=sc.nextDouble();
public void result(double d1,double d2,)
{
if(d1<0&&d2=0)
{
System.out.println("結果為負無窮");
}
else if(d1>0&&d2=0)
{
System.out.println("結果為正無窮");
}
else if
{
System.out.println( d1/d2);
}

}
public static void main(String []args)
{
zero z=new zero();
z.result(d1,d2);
}
}

B. java的異常處理。一種由程序本身捕獲並處理異常,另一種將異常拋出,交由JVM捕獲處理。

您好,提問者:
一種是內部處理不需要內外界通知的異常。容

一種是內部不想處理而拋給外界處理的異常。

例如:

1、 操作資料庫時發生的異常,這個就不能拋,因為操作資料庫的人不會處理異常。

2、操作資料庫時用戶可能發生的異常,比如傳值錯誤,這個時候可以拋出一個異常。

publicvoiddelete(intid){
try{
xxx;
}catch(SQLExceptione){
thrownewSQLException("刪除失敗,ID不存在!");
}
}

交給JVM捕捉處理的語句是throws Exception,說白了就是拋到最後還沒有碰到try就真的拋給JVM了。

C. java異常處理,報異常的話怎麼處理對象值,並持久化到資料庫中

//沒看到有人回答你,我還沒學到框架,不知道那個是不是可以很便捷操作你說的這樣過程
//我寫個基礎點的,就是一個序列化與反序列化的過程,你這個是要偵測到參數異常的時候
//才開始進行序列化操作的,其實我覺得原理應該都是一樣的吧!
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.io.Serializable;
importjava.util.ArrayList;
publicclassObjectTest{
Filepath=newFile("K:/IO測試/Bai");//路徑!
staticFilefile=null;
Stringname=null;
publicstaticvoidmain(String[]args){
ObjectTestobj=newObjectTest();
obj.createUser();//創建對象,傳入非法參數進行捕捉!

Useru=obj.des();//反序列化過程!
if(u!=null)
System.out.println(" 查看對象屬性: "+u);
}
//1.序列化過程!
publicStringcreateUser(){
ObjectOutputStreamoos=null;
ArrayList<User>userMapper=newArrayList<>();
Useruser=newUser();
try{
user.setName("小明");
name=user.getName()+".object";
user.setStatus(0);//將狀態設置為成功
userMapper.add(user);
}catch(Exceptione){
//報異常,將status設置為1存到庫中
System.out.println("偵測到參數異常,即將存入資料庫!");
user.setStatus(1);
Filetem=newFile(path,name);
if(!tem.exists()){//如果異常文件不存在,就創建!
file=newFile(path,name);
try{
oos=newObjectOutputStream(newFileOutputStream(file));
oos.writeObject(user);
System.out.println("正在寫入數據!");
}catch(FileNotFoundExceptione1){
e1.printStackTrace();
}catch(IOExceptione1){
e1.printStackTrace();
}
}else{
System.out.println("資料庫中已經有數據,寫入失敗,直接讀取! ");
}

}finally{
if(oos!=null){
try{
oos.close();
System.out.println("存入完成! ");
}catch(IOExceptione){
e.printStackTrace();
}
}
}
returnname;
}
//2.反序列化過程:也就是讀取序列化文件的過程!
privateUserdes(){
ObjectInputStreamois=null;
Filefiled=newFile(path,name);
if(!filed.exists()){
System.out.println("數據不存在,失敗!");
returnnull;
}
try{
System.out.println("數據存在,開始反序列化!");
ois=newObjectInputStream(newFileInputStream(newFile(path,name)));
return(User)ois.readObject();

}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}catch(ClassNotFoundExceptione){
e.printStackTrace();

}finally{
if(ois!=null){
try{
ois.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
returnnull;
}
}
//角色類
{
=1L;
privateStringname;
privateintstatus;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetStatus(){
returnstatus;
}
publicvoidsetStatus(intstatus){
if(status<=0){
thrownewRuntimeException("");
}
this.status=status;
}
publicStringtoString(){
return"姓名:"+name+"; 年齡:"+status;
}
}

D. java的異常處理

增加一個catch(ArithmeticException e){
System.out.println("b不能為0");
}

E. java資料庫異常處理

oracle的資料庫服務沒抄有啟動。所以使用命令net
start
oracleservicefoxnicco(foxnicco為資料庫名字)啟動服務。關閉並重啟oracleorahome90tnslistener,試試吧

F. 詳細描述java是如何處理異常的

當出現程序無法控制的外部環境問題(用戶提供的文件不存在,文件內容損壞,網路不可用...)時,JAVA就會用異常對象來描述。
JAVA中用2種方法處理異常:
1.在發生異常的地方直接處理;
2.將異常拋給調用者,讓調用者處理。
JAVA異常可分為3種:
(1)檢查性異常:java.lang.Exception
(2)運行期異常:java.lang.RuntimeException
(3)錯誤:java.lang.Error
頂層是java.lang.Throwable類,檢查性異常,運行期異常,錯誤都是這個類的子孫類。
java.lang.Exception和java.lang.Error繼承自java.lang.Throwable,而java.lang.RuntimeException繼承自java.lang.Exception.
檢查性異常------程序正確,但因為外在的環境條件不滿足引發。例如:用戶錯誤及I/O問題----程序試圖打開一個並不存在的遠程Socket埠。這不是程序本身的邏輯錯誤,而很可能是遠程機器名字錯誤(用戶拼寫錯誤)。對商用軟體系統,程序開發者必須考慮並處理這個問題。JAVA編譯器強制要求處理這類異常,如果不捕獲這類異常,程序將不能被編譯。
運行期異常------這意味著程序存在bug,如數組越界,0被除,入參不滿足規范.....這類異常需要更改程序來避免,JAVA編譯器強制要求處理這類異常。
錯誤------一般很少見,也很難通過程序解決。它可能源於程序的bug,但一般更可能源於環境問題,如內存耗盡。錯誤在程序中無須處理,而有運行環境處理。
如何處理異常?
1.try...catch
程序運行產生異常時,將從異常發生點中斷程序並向外拋出異常信息。
Java代碼
int x = (int)(Math.random()*5);
int y = (int)(Math.random()*10);
int[] z =new int[5];
try
{
System.out.println("y/x="+(y/x));
System.out.println("y="+y+"z[y]="+z[y]);
}
catch (ArithmeticException exc1)
{
System.out.println("算術運算異常:"+exc1.getMessage());
}
catch ( exc2)
{
System.out.println("數據越界異常:"+exc2.getMessage());
}
說明:ArithmeticException和都屬運行期異常:java.lang.RuntimeException,如果不用try...catch捕獲,程序也是可通過編譯的,但如果屬於檢查性異常:java.lang.Exception,必須而且一定要用try...catch...對其進行處理。
2.finally
如果把finally塊置try...catch...語句後,finally塊一般都會得到執行,它相當於一個萬能的保險,即使前面的try塊發生異常,而又沒有對應異常的catch塊,finally塊將馬上執行。
以下情形,finally塊將不會被執行:
(1)finally塊中發生了異常;
(2)程序所在線程死亡;
(3)在前面的代碼中用了System.exit();
(4)關閉CPU。
3.多個異常的處理規則:
定義多個catch可精確地定位異常。如果為子類的異常定義了特殊的catch塊,而父類的異常則放在另外一個catch塊中,此時,必須滿足以下規則:子類異常的處理塊必須在父類異常處理塊的前面,否則會發生編譯錯誤。所以,越特殊的異常越在前面處理,越普遍的異常越在後面處理。這類似於制訂防火牆的規則次序:較特殊的規則在前,較普通的規則在後。
自己也可以定義並拋出異常,方法是2步:創建異常,拋出異常(首先實例化一個異常對象,然後用thow拋出)合在一起就是----
thow new IOException("異常說明信息")。將創建異常,拋出異常合在一起的好處是:創建異常時,會包含異常創建處的行信息,異常被捕獲時可以通過堆棧跡(stack Trace)的形式報告這些信息。如果在同一行代碼創建和拋出異常,對於程序的調試將非常有用。
所以,thow new XXX()已經成為一個標準的異常拋出範式。
在定義一個方法時,方法塊中調用的方法可能會拋出異常,可用上面的thow new XXX()處理,如果不處理,那麼必須在方法定義時,用thows聲明這個方法會拋出的異常。
對異常的處理,有一條行之有效的默認規則:向上拋出-----被調用類在運行過程中對遇到的異常一概不作處理,而是直接向上拋出,一直到最上層的調用類,調用類根據應用系統的需求和特定的異常處理規則進行處理,如向控制台輸出異常堆棧信息,列印在日誌文件中。用一句形象的話來說,就是誰使用,誰(最上層的調用類)處理。

G. java中異常處理

import java.util.*;
public class Chapter17_1 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
boolean continueInput=true;
String WrongInput = "";
do {
try {
WrongInput = scanner.next();
int num1 = Integer.valueOf(WrongInput);
String i = scanner.next();
WrongInput = scanner.next();
int num2 = Integer.valueOf(WrongInput);
int result = 0;
switch (i.charAt(0)) {
case '+': result = num1 +num2;
break;
case '-': result = num1-num2;
break;
case '*': result = num1*num2;
break;
case '/': result = num1/num2;
}
System.out.println(num1 + i + num2 + " = " + result);
continueInput=false;
}catch (InputMismatchException e) {
//這可沒處理
}catch(NumberFormatException e){
System.out.println("Wrong Input:" + WrongInput);
}
} while (continueInput);
}
}
改了一下 可能和你的初衷不太一樣
我的思路是獲取String類型 然後轉換類型 因此catch了NumberFormatException 當然要顯示出來這個字元的話 只能把在try之前存下這個數了

H. Java對異常如何進行判斷和處理

try{
//操作資料庫來代碼

}catch(Exception e){
if(e.getMessage().indexOf("U_TEACHER")>0){
System.out.println("是關於自違反Oracle一個唯一性約束U_TEACHER");

}else if(e.getMessage().indexOf("U_ROOM")>0){
System.out.println("是關於違反Oracle一個唯一性約束U_ROOM");

}

}

I. java異常處理,用scanner輸入數據,出錯後拋出異常並要求再次輸入,但運行時輸入錯誤數據類型後。。。

js">nextInt方法在發生異常後,不再接受用戶輸入的任何數據,而是徘徊在異常區域,如果外部使用死循環,從而導致死循環發生。

改用nextLine搭配NumberFormatException即可。Scannerkeyboard=newScanner(System.in);
for(;;){
System.out.println("輸入1個整數:");
try{
userAnswer=Integer.parseInt(keyboard.nextLine().trim());
break;
}catch(NumberFormatExceptionnfe){
System.out.print("輸入數據類型錯誤!你必須輸入數值數據! ");
continue;
}
}
keyboard.close();

J. java異常處理

這個異常應該抄不是在編譯的時候出的吧,我剛剛編譯了你的程序,沒有異常。
你應該是試圖用java Exam4_5命令來運行這個applet時出錯了。applet是不能用java命令運行的。
用javac編譯之後,你可以新建一個html文件,內容如下:
<applet code=Exam4_5.class height=100 width=300>
</applet>
然後文件命名隨意,比如是test.html,然後運行命令:
appletviewer test.html
就可以運行了。

閱讀全文

與java數據異常處理相關的資料

熱點內容
電影播放量排行榜在哪裡看 瀏覽:717
網路銷售辦公圖片素材 瀏覽:390
ps肉色代碼 瀏覽:258
快穿以肉為主 瀏覽:376
券商的數據分析工程師怎麼樣 瀏覽:31
日本武士恐怖電影 瀏覽:120
電影電視劇小孩子的戀愛 瀏覽:383
怎麼下載pptv網路電視 瀏覽:3
邵氏論理電影 瀏覽:142
ps怎麼導成製作文件 瀏覽:273
文件夾和桌面同步快捷方式 瀏覽:187
阿里雲如何上傳壓縮文件 瀏覽:244
李彩譚作品大全 瀏覽:955
可迅雷下載的免費網站你懂得 瀏覽:951
貴州數據公司前景如何 瀏覽:293
格信網路技術有限公司電話 瀏覽:598
桌面上整理的文件都去哪裡了 瀏覽:848
微信2016年業績報告 瀏覽:312
文件對比軟體免費的 瀏覽:891
女主姓沈的現代重生小說 瀏覽:439

友情鏈接