导航:首页 > 编程语言 > 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数据异常处理相关的资料

热点内容
欧美电影有中英文字幕 浏览:760
宅男在线影院 浏览:847
怎么看日本上映电影 浏览:190
朋友分享的app有哪些 浏览:770
贪婪的朋友女友演员 浏览:420
男主角与国外母亲 浏览:502
葵花宝典台湾 浏览:602
法国啄木鸟官网app 浏览:7
linux文件解锁 浏览:316
linux启动其他文件夹程序 浏览:651
去哪能查到影院放啥电影 浏览:509
棒棒冰电影全部演员表 浏览:715
最新中文大片免费在线 浏览:508
我下电影app 浏览:462
穿越重生拍电影电视剧的小说 浏览:801
三个能看的网站 浏览:979
assetbundleeditor版本 浏览:58
文件名home壁纸 浏览:518
拍片小电影的黑人 浏览:531

友情链接