-
2021-02-28 13:50:06
首先,
有两种类型的例外.检查&未选中.
未经检查的异常是您的程序无法恢复的异常.就像NullPointers一样,告诉你你的逻辑确实存在问题.
已检查的异常是运行时异常,您可以从这些异常中恢复.
因此,您应该避免使用catch statemens查找“Exception”基类.这代表了两次.您应该考虑寻找特定的异常(通常是运行时异常的子类).
简而言之,还有更多内容.
您还应该记住,不应将异常处理用作工作流.通常表明您的架构有点不足.正如名称所述,它们应被视为正常执行的“例外”.
现在,考虑你的代码:
for(DataSource source : dataSources) {
try {
//do something with 'source'
} catch (Exception e) { // catch any exception
continue; // will just skip this iteration and jump to the next
}
//other stuff ?
}
事实上,它应该抓住异常并继续前进.也许你有什么不告诉我们的? :P
无论如何,希望这会有所帮助.
更多相关内容 -
浅谈java中异常抛出后代码是否会继续执行
2020-09-01 12:16:49主要给大家介绍了java中异常抛出后代码是否会继续执行,文章通过几种情况的代码示例给大家详细分析了这个情况,有需要的朋友们可以参考借鉴,下面来一起看看吧。 -
Java 自定义异常和抛出异常
2017-06-14 14:19:55Java 自定义异常和抛出异常的练习demo -
java抛出异常后面的代码是否能执行及 return 语句执行情况
2020-12-20 17:18:351. 抛出异常后的代码执行情况 下面使用三段代码进行测试 代码1 public static void test1() throws Exception { throw new Exception("参数越界"); System.out.println("异常后"); //编译错误,「无法访问的语句...1. 抛出异常后的代码执行情况
下面使用三段代码进行测试
代码1
public static void test1() throws Exception { throw new Exception("参数越界"); System.out.println("异常后"); //编译错误,「无法访问的语句」 }
代码2
public static void test2() throws Exception { try { throw new Exception("参数越界"); } catch (Exception e) { e.printStackTrace(); } System.out.println("异常后"); // 可以执行 }
代码3
public static void test3() throws Exception { if (true) { throw new Exception("参数越界"); } System.out.println("异常后"); //抛出异常,但不会执行 }
代码4
public static void test4() throws Exception { try{ throw new Exception("参数越界"); }catch (Exception e){ System.out.println("catch"); return; } System.out.println("异常后"); // 编译错误,「无法访问的语句」 }
总结:
- 若一段代码前有异常抛出,并且这个异常没有被捕获,这段代码将产生编译时错误「无法访问的语句」。如代码1
- 若一段代码前有异常抛出,并且这个异常被try…catch所捕获,若此时catch语句中没有抛出新的异常,则这段代码能够被执行,否则,同第1条。如代码2
- 若在一个条件语句中抛出异常,则程序能被编译,但后面的语句不会被执行。如代码3
- 若cath语句中使用return ,则如果有异常抛出, 被catch 捕捉到, 那么后面的语句都不会被执行, 并且会抛出编译错误 ,如代码4
2. Java中try catch finally语句中含有return语句的执行情况
首先, 不建议在 finally 语句块中使用 return 语句, 因为 finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那么直接从finally中返回了
对于含有return语句的情况,这里可以简单地总结如下:
try语句在返回前,将其他所有的操作执行完,保留好要返回的值,而后转入执行finally中的语句,而后分为以下三种情况:
1. 情况一:
如果finally中有return语句,则会将try中的return语句”覆盖“掉,直接执行finally中的return语句,得到返回值,这样便无法得到try之前保留好的返回值。
2. 情况二:
如果finally中没有return语句,也没有改变要返回值,则执行完finally中的语句后,会接着执行try中的return语句,返回之前保留的值。
3. 情况三:
如果finally中没有return语句,但是改变了要返回的值,这里有点类似与引用传递和值传递的区别,分以下两种情况:
1)如果return的数据是基本数据类型或文本字符串,则在finally中对该基本数据的改变不起作用,try中的return语句依然会返回进入finally块之前保留的值。
2)如果return的数据是引用数据类型,而在finally中对该引用数据类型的属性值的改变起作用,try中的return语句返回的就是在finally中改变后的该属性的值。
-
如何在Java中抛出异常?
2021-03-06 01:45:06有时我们可能需要重新抛出Java中的异常。如果catch块无法处理已捕获的特定异常,则可以重新抛出该异常。重新抛出表达式导致原始抛出的对象被重新抛出。因为已经在发生重新抛出表达式的范围内捕获了异常,所以将其抛...有时我们可能需要重新抛出Java中的异常。如果catch块无法处理已捕获的特定异常,则可以重新抛出该异常。重新抛出表达式导致原始抛出的对象被重新抛出。
因为已经在发生重新抛出表达式的范围内捕获了异常,所以将其抛出到下一个封闭的try块中。因此,它不能由发生重新抛出表达式的作用域中的catch块处理。封闭的try块的任何catch块都有机会捕获异常。
语法catch(Exception e) {
System.out.println("An exception was thrown");
throw e;
}
示例public class RethrowException {
public static void test1() throws Exception {
System.out.println("The Exception in test1() method");
throw new Exception("thrown from test1() method");
}
public static void test2() throws Throwable {
try {
test1();
} catch(Exception e) {
System.out.println("Inside test2() method");
throw e;
}
}
public static void main(String[] args) throws Throwable {
try {
test2();
} catch(Exception e) {
System.out.println("Caught in main");
}
}
}
输出结果The Exception in test1() method
Inside test2() method
Caught in main
-
Java异常之抛出异常详解和代码举例
2020-06-06 14:20:45抛出异常 自定义异常类 抛出异常 1.在捕获异常之前,必须有一段代码生成并抛出一个异常对象。 2.异常类型不同,抛出异常的方法也不同,分为:系统自动抛出的异常、指定方法抛 出的异常。 3.系统定义的异常由...Java语言的异常
抛出异常 1.在捕获异常之前,必须有一段代码生成并抛出一个异常对象。 2.异常类型不同,抛出异常的方法也不同,分为:系统自动抛出的异常、指定方法抛 出的异常。 3.系统定义的异常由系统抛出;指定方法抛出的异常需使用关键字throw或throws; 我们主要讨论由方法抛出的异常用法。 1.抛出异常的方法与调用方法处理异常 1.异常的产生和处理可以在一个方法内进行; 2.异常的产生和处理也可以不在一个方法中,即一个方法产生异常,由该方法的调用者去处理异常 相对应地,异常有关的方法就有两个:有抛出异常的方法 和处理异常的方法。 2.抛出异常的方法 1.在方法体内使用throw抛出异常:throw 由异常类产生的对象; 2.在方法头部添加throws抛出异常: [修饰符] 返回值类型 方法名([参数列表]) throws 异常列表{ … … } 由上述两种方式抛出异常,在该方法内就不必提供try-catch-finally 块去处理异常,有调用者的程序处理。 3.处理异常的方法 1.如果程序设计者调用了一个会抛出异常的方法,要么处理这个异常,要么将异常继续抛出。 示例1:方法内部抛出异常、处理异常 package ch09; public class Demo{ public static void main(String[] args){ int a=5,b=0; try{ if(b==0) throw new ArithmeticException(); //抛出异常 else System.out.println(a+"/"+b+"="+a/b); }catch(ArithmeticException e){ //方法内处理异常 System.out.println("异常:"+e+" 被抛出了!"); e.printStackTrace(); } } }
示例2: package ch09; public class Demo{ public static double multi(int n){ if(n<0) //该方法将抛出非法参数异常 throw new IllegalArgumentException("求负数阶乘异常"); double s=1; for(int i=1;i<=n;i++) s=s*i; return s; } public static void main(String[] args){ try{ int m=Integer.parseInt(args[0]); System.out.println(m+"!="+multi(m)); }catch(ArrayIndexOutOfBoundsException e){ System.out.println("命令行中没提供参数!"); }catch(NumberFormatException e){ System.out.println("应输入一个【整数】!"); }catch(IllegalArgumentException e){ //main方法捕获并处理非法参数异常 System.out.println("出现的异常是:"+e.toString()); }finally{ System.out.println("程序运行结束!!"); } } }
示例3: package ch09; public class Demo{ static void check(String str1) throws NullPointerException{ if(str1.length()>2){ str1=null; System.out.println(str1.length()); //将抛出空指针异常 } char ch; for (int i=0;i<str1.length();i++){ ch=str1.charAt(i); if(!Character.isDigit(ch)) throw new NumberFormatException(); } } public static void main(String[] args) throws Exception{ int num; try{ check(args[0]); num=Integer.parseInt(args[0]); if (num>60) System.out.println("成绩为:"+num+" 及格"); else System.out.println("成绩为:"+num+" 不及格"); }catch(NullPointerException e){ System.out.println("空指针异常:"+e.toString()); }catch (NumberFormatException ex){ System.out.println("输入的参数不是数值类型"); }catch (Exception e){ System.out.println("命令行中没有提供参数"); } } }
2.由方法抛出的异常交给系统处理(需要同学明确Java对异常强制检查要求的知识) 1.Java 对 Exception 类中的异常可分为受检查型异常和非检查型异常两大 类。 2.所有非检查型异常都是RuntimeException类的子类,Java编译器对非检 查型异常不要求进行捕获和 处理也能通过编译;而对不是RuntimeException类子类的异常则都是受检查型异常, 即如方法 抛出这类异常,调用者必须处理该异常。 3.对于受检查型异常,如果调用者不处理,则必须在最后的 main 方法中将 异常提交给系统。 示例1:异常最后由main方法提交给系统 package ch09; import java.io.FileInputStream; import java.io.IOException; public class Demo{ public static void main(String[] args) throws IOException{ //删掉异常将不能通过编译 FileInputStream fis=new FileInputStream("12.txt"); } }
示例2: package ch09; import java.io.*; import java.util.Scanner; public class Demo{ public static void main(String[] args) throws IOException{ String str; //以下注释部分用Scanner方式替代 //BufferedReader buf; //buf=new BufferedReader(new InputStreamReader(System.in)); Scanner sc=new Scanner(System.in); while (true){ try{ System.out.print("请输入字符串:"); //str=buf.readLine(); str=sc.nextLine(); if(str.length()>0) break; else throw new IOException(); }catch (IOException e){ System.out.println("必须输入字符串!!"); continue; } } String s=str.toUpperCase(); System.out.println("转换后的字符串为:"+s); sc.close(); } }
-
java中抛出异常后代码继续执行的问题
2022-01-13 11:10:35=0判断,并抛出可能的异常,但我并没有考虑到这个矩阵里面有的格子数据本身是null的情况,也就是说单个map的空指针异常导致了我的应用处理方法里面也会抛出异常,相当于处理模块没法用了,这就导致了刷出来的数据... -
Java接口抛出异常,但接口实现不抛出异常?
2021-03-04 04:47:08我读到这段代码的接口抛出一个...Java接口抛出异常,但接口实现不抛出异常?import java.rmi.*;public interface MyRemote extends Remote {public String sayHello() throws RemoteException;}import java.rmi.*... -
java抛出异常是怎么回事?
2021-02-13 00:49:01一、Java异常的基础知识异常是程序中的一些错误,...如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出java.lang.ArithmeticException的异常。有些异常需要做处理,有些则不需要捕获处理,后面... -
简述java中抛出异常的两种方式
2021-03-22 17:37:26java编程中经常遇到异常,这时就需要利用java中的异常抛出机制,在java中提供了两种抛出异常的方法:try{} catch() {}和throw。一、抛出异常的两种方式(1) 首先我们来看一下try() catch(){}这种方式:try{i=9\0;}... -
java 抛出异常处理的方法
2021-02-26 12:30:44java 抛出异常处理的方法为了避免调用的人不知道有异常,才抛出异常的,所以是谁掉用的久在哪里处理。说的对吗对.1、throws关键字通常被应用在声明方法时,用来指定可能抛出的异常。多个异常可以使用逗号隔开。当在... -
Java 异常处理 之 手动抛出异常
2021-03-05 16:38:58一、手动抛出异常 throw在编写程序时,我们必须要考虑程序出现问题的情况。比如,在定义方法时,方法需要接受参数。那么,当调用方法使用接受到的参数时,首先需要先对参数数据进行合法的判断,数据若不合法,就应该... -
java中异常抛出后代码还会继续执行吗
2021-03-08 04:55:27今天遇到一个问题,在下面的代码中,当抛出运行时异常后,后面的代码还会执行吗,是否需要在异常后面加上return语句呢?public void add(int index, E element){if(size >= elements.length) {throw new ... -
简单了解Java编程中抛出异常的方法
2021-02-12 22:46:51任何Java代码都可以抛出异常,如:自己编写的代码、来自Java开发环境包中代码,或者Java运行时系统。无论是谁,都可以通过Java的throw语句抛出异常。从方法中抛出的任何异常都必须使用throws子句。1. throws抛出异常... -
java提供给程序主动抛出异常的语句
2021-02-12 10:44:03展开全部直接throws Exception 写在你的方法或者类名后或者用try catch在 Java 应用程序中,异常处理机62616964757a686964616fe4b893e5b19e31333365646263制为:抛出异常,捕捉异常。抛出异常:当一个方法出现错误... -
java中 方法中抛出异常处理方法
2021-02-12 10:16:131、捕获异常:(1)在Java程序运行过程中系统得到一个异常对象是,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。(2)找到能够处理这种类型异常的方法后,运行时系统把当前异常交给这个方法处理;如果找不... -
怎样确保java代码在抛出异常时都回滚,而不只是运行时异常
2018-07-17 16:05:00//使用TransactionAspectSupport确保出现异常以后,事务能回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return false; } return true; } 编程式事务:就是直接在... -
java异常——捕获异常+再次抛出异常与异常链
2021-02-12 17:29:41【0】README0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java异常——捕获异常+再次抛出异常与异常链 的相关知识;【1】捕获异常相关1.1)如果某个异常发生的时候没有再任何地方进行捕获, 那程序就... -
java – 在catch子句中抛出异常
2021-03-17 21:23:46我有两段代码:class PreciseRethrow {public static void main(String[] str) {try {foo();} catch (NumberFormatException ife) {System.out.println(ife);}}static private void foo() throws ... -
关于Java通过throw主动抛出异常
2021-07-22 22:49:02Java提供了许多异常自动处理机制,这里主要聊一下异常的主动抛出 异常处理机制 异常处理五个关键字 try、catch、finally、throw、throws try—catch—finally int a = 1; int b = 0; try{ System.out.println(a/b); ... -
Java异常的抛出
2021-02-28 13:52:20抛出异常的两种方式,一是在方法内部用throw语句,二是在方法定义时用throws关键字1.throw语句在Java中,throw语句用于抛出一个异常。异常的具体类型可以是由程序员自己定义,也可以是Java系统异常类型。记住,异常... -
Java 如何抛出异常、自定义异常
2017-06-13 23:18:02一、异常的抛出 1、定义 : 一个...(位置: 方法体内)3、throws : 如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常。用它修饰的方法向调用者表明该方法可能会抛出异 -
Java 异常:抛出异常
2018-09-15 18:06:182.什么时候使用:当所写的代码因不满足某些条件致使程序无法运行时可以借助throw抛出一个异常对象提醒程序员。 3.当b为0时不满足下面输出语的执行条件,所以使用throw关键字抛出运行时异常,用于... -
JAVA抛出异常的三种形式
2018-10-03 11:33:55一、系统自动抛出异常 当程序语句出现一些逻辑错误、主义错误或者类型转换错误时,系统会自动抛出异常 例一 public static void main(String[] args) { int a = 5; int b = 0; System.out.println( a / b);... -
java捕获异常和抛出异常_Java捕获多个异常,重新抛出异常
2020-07-12 04:14:52java捕获异常和抛出异常In Java 7, catch block has been improved to handle multiple exceptions in a single catch block. If you are catching multiple exceptions and they have similar code, then using ... -
Java问题:在Java程序中抛出异常后,其之后的代码还会继续执行吗
2021-04-14 15:40:50当抛出运行时异常后,后面的代码还会执行吗 有这样的一个问题,当抛出运行时异常后,后面的代码还会执行吗,是否需要在异常后面加上return语句呢?如下代码: public void add(int index, E element){ if(size >... -
java如何抛出异常
2019-02-27 21:12:22比如,你在写一个service,其中在写到某段代码处,你发现可能会产生问题,那么就请抛出异常吧,相信我,你此时抛出异常将是一个最佳时机 2.抛出怎么样的异常? 异常的抛出不仅仅是throw掉或者catch掉,而也应该进行... -
Java的声明抛出异常
2018-07-29 17:26:11声明抛出异常 这个体系中的所有类和对象都具备一个独有的特点;就是可抛性。可抛性的体现:就是这个体系中的类和对象都可以被throws和throw两个关键字所操作。 如果一个方法(中的语句执行时)可能生成某种异常,... -
java – 从CompletableFuture抛出异常
2021-03-15 15:40:36您的代码建议您稍后在同一方法中使用异步操作的结果,因此您无论如何都必须处理CompletionException,因此处理它的一种方法是public void myFunc() throws ServerException {// Some codeCompletableFuture a = ...