① java catch多个异常
//例子一
import java.util.Random;
public class Test
{
public static void main(String[] args)
{
final Random r=new Random();
final Exception[] exs=
{
new Exception1(),
new Exception2(),
new Exception("Exception")
};
for(int i=0;i<5;i++)
{
try
{
throw exs[r.nextInt(exs.length)];
}
catch(Exception1 ex)
{
System.out.println(ex);
}
catch(Exception2 ex)
{
System.out.println(ex);
}
catch(Exception ex)
{
System.out.println(ex);
}
}
}
}
class Exception1 extends Exception
{
@Override
public String toString()
{
return "Exception1";
}
}
class Exception2 extends Exception
{
@Override
public String toString()
{
return "Exception2";
}
}
//例子二(需较新的java版本才能支持)
import java.util.Random;
public class Test
{
public static void main(String[] args)
{
final Random r=new Random();
final Exception[] exs=
{
new Exception1(),
new Exception3(),
new Exception2(),
new Exception("Exception")
};
for(int i=0;i<5;i++)
{
try
{
throw exs[r.nextInt(exs.length)];
}
catch(Exception3|Exception1|Exception2 ex)
{
System.out.println(ex);
}
catch(Exception ex)
{
System.out.println(ex);
}
}
}
}
class Exception1 extends Exception
{
@Override
public String toString()
{
return "Exception1";
}
}
class Exception2 extends Exception
{
@Override
public String toString()
{
return "Exception2";
}
}
class Exception3 extends Exception
{
@Override
public String toString()
{
return "Exception3";
}
}
② java中try 与catch的使用
try{
//代码区
}catch(Exception e){
//异常处理
}
try语句:
try语句用大括号{}指定了一段代码,该段代码可能会抛弃一个或多个例外。
catch语句:
catch语句的参数类似于方法的声明,包括一个例外类型和一个例外对象。例外类型必须为Throwable类的子类,它指明了catch语句所处理的例外类型,例外对象则由运行时系统在try所指定的代码块中生成并被捕获,大括号中包含对象的处理,其中可以调用对象的方法。
catch语句可以有多个,分别处理不同类的例外。Java运行时系统从上到下分别对每个catch语句处理的例外类型进行检测,直到找到类型相匹配的catch语句为止。这里,类型匹配指catch所处理的例外类型与生成的例外对象的类型完全一致或者是它的父类,因此,catch语句的排列顺序应该是从特殊到一般。
也可以用一个catch语句处理多个例外类型,这时它的例外类型参数应该是这多个例外类型的父类,程序设计中要根据具体的情况来选择catch语句的例外处理类型。
③ Java 写try...catch语句 写多个不同类型的异常捕捉好还是只写一个Exception好
看你异常之后要做什么处理了。如果不同的异常你又不同的处理逻辑,那就分开写。如果处理逻辑一样,那写一个就行了。
④ JAVA中,多个catch真的是最理想的方式吗(暂时不谈throws)
1,整个代码中要求不能出现任何错误,并且没有用户交互数据,如果出了异常,这种情况通常都是要修改代码才能解决的,这种直接 抛出去,不需要try
2,代码中有用户交互,并且用户数据的数据要有格式限制,如何输入的数据有错误,就会出异常,这种情况是数据格式不对,代码没有错误,这种就要用try语句,并且按异常类型进行信息反馈给用户,让用户知道什么错,然后进行修改。
catch是不是要很多类型,主要看这个信息谁看,如果是反馈给用户,每种catch的异常类型的信息肯定不同,并且还要进行说明,
有些异常出了错,还要对出错语句以前的某些操作的信息进行操作,而有些又不需要,这种就要 分别catch
⑤ java中什么叫多重捕获MultiCatch,它的用法是怎样的
multicatch就是捕获多个异常,其原因就是被监控的语句可能发生多重异常,例子如下
try{
----------
} catch (IOException e) {
} catch (NullPointerException e) {
}
⑥ 一个.java文件里有多个异常,用try-catch处理要怎么处理啊
所有可能错的程序段放在一个try里,接着多个catch依次抓取异常就可以了,注意抓取时先catch子异常再父异常(有包含关系时)
⑦ java为什么会发生catch异常
Java代码
import java.io.IOException;
public class ExceptionTryCatchTest {
public void doSomething() throws IOException{
System.out.println("do somthing");
}
public static void main(String[] args){
ExceptionTryCatchTest et = new ExceptionTryCatchTest();
try {
et.doSomething();
} catch (Exception e) {
//
} catch (IOException e) {
//
}
}
}
问题:上述程序能否编译通过?为什么?
解答:不能编译通过。因为编译的时候会报错:已捕捉到异常 java.io.IOException。 catch(IOException e)这句有错误。
分析:对于try..catch捕获异常的形式来说,对于异常的捕获,可以有多个catch。对于try里面发生的异常,他会根据发生的异常和catch里面的进行匹配(怎么匹配,按照catch块从上往下匹配),当它匹配某一个catch块的时候,他就直接进入到这个catch块里面去了,后面在再有catch块的话,它不做任何处理,直接跳过去,全部忽略掉。如果有finally的话进入到finally里面继续执行。换句话说,如果有匹配的catch,它就会忽略掉这个catch后面所有的catch。对我们这个方法来说,抛出的是IOException,当执行etct.doSomething();时,可能会抛出IOException,一但抛出IOException,它首先进入到catch (Exception e) {}里面,先和Exception匹配,由于OExceptionextends Exception,根据多态的原则,IOException是匹配Exception的,所以程序就会进入到catch (Exception e) {}里面,进入到第一个catch后,后面的catch都不会执行了,所以catch (IOException e) {}永远都执行不到,就给我们报出了前面的错误:已捕捉到异常 java.io.IOException。
总结:在写异常处理的时候,一定要把异常范围小的放在前面,范围大的放在后面,Exception这个异常的根类一定要刚在最后一个catch里面,如果放在前面或者中间,任何异常都会和Exception匹配的,就会报已捕获到...异常的错误。
⑧ Java 中try catch语句 Catch( )这个括号里面该怎么写,有几种情况 求大神解释
catch
就是处理各种异常。
简单的可以直接一个Exception任何异常出现在try中就会执行这里。
或者分成多个catch,
处理各种异常
但是要注意
底层exception在前,高级的在后,否则无法通过编译
⑨ java中try和catch的具体作用
try就像一个网,把try{}里面的代码所抛出的异常都网住,然后把异常交给catch{}里面的代码去处理,最后执行finally之中的代码。
无论try中代码有没有异常,也无论catch是否将异常捕获到,finally中的代码都一定会被执行。
例如:当除数为0时,编译不会报错,如果没有try/catch的话,程序直接崩溃。用try/catch的话,则可以让程序运行下去,并且输出为什么出错。
(9)java多个catch扩展阅读
java中try....catch的使用原则
1、当代码中可能会遇到的异常需要用try{ }catch{Exception e}来处理,否则导致程序崩溃。
2、不要在for循环里面嵌套try catch子句。
3、尽可能的减少try catch子句的嵌套,会影响性能。
4、同一个try子句中多个catch时,异常处理原则。
当一个try块中包含众多语句,可能抛出多种不同的异常,只有通过多个catch块来捕获不同的异常。而如果两个异常存在继承关系,应该把子类异常放在父类异常的前面来捕获,或者把最小范围异常放在最前面 ,范围大的放在后面。
因为是按照catch块从上往下匹配,当它匹配某一个catch块的时候,就直接进入到这个catch块里面去了,后面在再有catch块的话,它不做任何处理,直接跳过去,全部忽略掉。
如果有finally的话进入到finally里面继续执行。Exception这个异常的根类一定要刚在最后一个catch里面,如果放在前面或者中间,任何异常都会和Exception匹配的,就会报已捕获到异常的错误。
⑩ java中 在一个异常处理中什么语句块是可多个的
异常处理一般格式:
捕获异常:
try{
//代码块
}catch(异常类型,例如:Exception e){
//需要抛出的异常,例如:e.printStackTrace();
}catch(异常类型){
//需要抛出的异常
}finally{
//必定执行的代码块
}
所以说在一个异常处理中catch语句块是可以多个的,也就是可以抛出多个异常!