精华内容
下载资源
问答
  • java异常抛出

    2015-03-07 15:28:22
    如果你知道你写的某个函数有可能抛出异常,而你又不想在这个函数中对异常进行处理,只是想把它抛出去让调用这个函数的上级调用函数进行处理,那么有两种方式可供选择: 第一种方式:直接在函数头中throws ...

    如果你知道你写的某个函数有可能抛出异常,而你又不想在这个函数中对异常进行处理,只是想把它抛出去让调用这个函数的上级调用函数进行处理,那么有两种方式可供选择:

    第一种方式:直接在函数头中throws SomeException,函数体中不需要try/catch。

    第二种方式:使用try/catch,在catch中进行一定的处理之后(如果有必要的话)抛出(throw)某种异常。

    展开全文
  • java异常抛出的执行顺序 有如下一段代码 try { statement1; statement2; statement3; } catch(Exception1 ex) { handling ex; } catch(Exception2 ex) { handling ex; //处理异常的代码 throw ex; //抛出...

    java异常抛出的执行顺序

    有如下一段代码

    try {  
      statement1;
      statement2;
      statement3;
    }
    catch(Exception1 ex) { 
      handling ex; 
    }
    catch(Exception2 ex) { 
      handling ex; 	//处理异常的代码
      throw ex;	//抛出一个异常
    }
    finally { 
      finalStatements; 
    }
    
    Next statement;
    

    如果statement2抛出一个Exception2类型的异常,该程序的执行顺序应该是什么呢?

    首先,该异常将会被Exception2 的catch代码块拦截到,然后执行 handing ex;语句,然后 进入 finally代码块,最后回到上次的catch代码块执行 throw ex;即抛出异常。

    展开全文
  • Java异常抛出专题

    千次阅读 2018-06-28 14:12:12
    对于编译性异常我们必须捕获或者抛出 ,否则程序无法编译成功,对于非编译性异常(运行时异常),这类异常可以编译成功但在运行的时候可能就会发生异常,常见的运行时异常主要有:ClassCastException、...

    前言

    对于编译性异常我们必须捕获或者抛出 ,否则程序无法编译成功,对于非编译性异常(运行时异常),这类异常可以编译成功但在运行的时候可能就会发生异常,常见的运行时异常主要有:ClassCastException、IndexOutOfBoundsException、NullPointerException、ArrayStoreException等,这类异常一般是程序逻辑错误引起的,在编写代码的时候应该规避这类异常的发生。

    相关问题

    1:如果当前代码块存在异常,应该采用抛出的方式or捕获方式?
    2:针对潜在的运行时异常是否应该对其做处理?

    判读采用抛出异常or捕获处理异常?

    • 1:抛出异常VS捕获异常

    抛出异常:抛出异常后当前方法无法继续下去,会从当前方法跳出来,然后把问题交给上一级处理,通过throws关键字抛出异常

    捕获异常:可以对异常进行处理或者继续抛出,通过try-catch关键字进行异常捕获,异常在catch中被处理后,可以继续向下执行。也可以在catch中通过throw方法继续向外抛出异常,此时不能继续向下执行。

    • 2:异常处理的三个原则:具体明确、及早抛出、延迟处理

    具体明确:抛出与捕获异常的时候尽量明确异常的类型,这样才能根据不同的异常,提供不同的解决方案。

    @SuppressWarnings("resource")
        public void readFile(String fileName){
            if(fileName==null){
                throw new IllegalArgumentException("fileName must not be null");
            }
    
            try {
                InputStream is= new FileInputStream(fileName);
                is.read();
                is.close();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                //处理一
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                //处理二
            }
    
        }

    提早抛出:有些比较明确的异常需要提前抛出,这样我们可以通过控制台打印的异常信息快速定位到出错的代码块,同时也可以避免不必要的对象构造或者资源调用。如下分别在调用两个方法的时候fileName参数都传递为null,显然采用代码二的方式更有利排查错误。
    代码一:

    @SuppressWarnings("resource")
        public void readFile(String fileName) throws IOException {
            InputStream is=new FileInputStream(fileName);
            is.read();
            is.close();
        }
        Exception in thread "main" java.lang.NullPointerException
        at java.io.FileInputStream.<init>(FileInputStream.java:130)
        at java.io.FileInputStream.<init>(FileInputStream.java:93)
        at com.javaweb.test.ExceptionTest.readFile(ExceptionTest.java:27)
        at com.javaweb.test.ExceptionTest.main(ExceptionTest.java:17)

    代码二:

    @SuppressWarnings("resource")
        public void readFile(String fileName) throws IOException {
            if(fileName==null){
                throw new IllegalArgumentException("fileName must not be null");
            }
            InputStream is=new FileInputStream(fileName);
            is.read();
            is.close();
        }
        Exception in thread "main" java.lang.IllegalArgumentException: fileName must not be null
        at com.javaweb.test.ExceptionTest.readFile(ExceptionTest.java:27)
        at com.javaweb.test.ExceptionTest.main(ExceptionTest.java:17)

    延迟捕获:让异常捕获处理放在最外层进行处理,这样才能根据不同的情况进行不同的处理。如下面代码:

    @SuppressWarnings("resource")
        public void readFile(String fileName) {
            if(fileName==null){
                throw new IllegalArgumentException("fileName must not be null");
            }
            InputStream is;
            try {
                is = new FileInputStream(fileName);
                is.read();
                is.close();
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }

    在readFile这个方法中处理异常的方法并没有直接抛出而是捕获处理,看起来可能没有什么错误。但在上层引用中,不同的业务逻辑对待处理异常的方式可能不同,所以对于底层方法出现的异常需要进行抛出。

    针对潜在的运行时异常是否应该对其做处理?

    代码一:

    @SuppressWarnings("resource")
        public void readFile(String fileName) throws IOException {
            if(fileName==null){
                throw new IllegalArgumentException("fileName must not be null");
            }
            InputStream is=new FileInputStream(fileName);
            is.read();
            is.close();
        }

    代码二:

    public int divide(int a ,int b){
            int result=0;
            if(b!=0){
                result=a/b;
            }
            return result;
        }

    通过对比代码一与代码二,可以总结一些规律。针对存在潜在运行时异常的代码块,如果能通过逻辑处理从而避免抛出异常,那么就对代码进行逻辑处理;如果无法进行逻辑处理从而避免抛出异常,那么就及时抛出异常。

    catch中通过throw继续抛出异常,此时throw抛出的异常如何被接收?

    @Override
        public void add(Category bean) {
            // TODO Auto-generated method stub
            try {
                QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
                String sql="INSERT INTO category (id,name,description) VALUES(?,?,?)";
                Object[] params={bean.getId(),bean.getName(),bean.getDescription()};
                qr.update(sql, params);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                throw new RuntimeException(e);
            }
        }

    如果上层方法直接或者间接调用这个add(),那么我们可以通过在上层方法中使用try-catch捕获这个异常

    展开全文
  • Java异常抛出及自定义异常

    千次阅读 2017-01-16 19:36:46
    throw 抛出异常 throws 抛出异常声明 首先自定义异常类(继承Exception类) public class MyException extends Exception { public MyException(String message){ super(message); } } 抛出异常 ...

    throw  抛出异常

    throws 抛出异常声明


    首先自定义异常类(继承Exception类)

    public class MyException extends Exception {
    	public MyException(String message){
    		super(message);
    	}
    }
    

    抛出异常

    package yh;
    public class Test {
    	public void g(int num) throws MyException{
    			if(num < 0)
    				throw new MyException("参数不能为负!");
    			else
    				System.out.println(num);
    	} 
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Test t = new Test();
    		try{
    			t.g(1); 
    			t.g(2);
    			t.g(-1);
    			t.g(5);
    		}catch(MyException e){
    			System.out.println(e.getMessage());
    		}
    	}
    }
    

    输出结果如下:



    展开全文
  • Java 异常抛出 简单用法示例

    千次阅读 2018-06-30 14:41:42
    在面向对象语言里,使用异常(其实也是类)。把出错信息封装到异常类里面,这样当出错的时候,就可以根据捕获的异常对象获取更多的出错信息。简单的大家都懂,直接上代码:(1)public class TestSystemIn { public...
  • Java异常抛出

    千次阅读 2013-06-06 16:41:20
    1. java.lang.nullpointerexception 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,...
  • java异常抛出时间顺序

    千次阅读 2013-01-24 23:38:26
    1、当前方法抛出异常时(交给java虚拟机执行异常处理) public class ExceptionTest5 { public void method(String str) throws MyException{ if(str == null){ throw new MyException("传入的字符串参数...
  • Java异常抛出时的规定

    2013-03-07 17:08:38
     1,子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法,只能抛出父类的异常或者该异常的子类.  2,如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集.  3,如果父类或者接口的...
  • 同时,抛出一个异常对象 。 File file = new File("文件存储地址"); 但“存储文件地址”不存在,会在程序执行中,报文件空指针异常。 ② 调用该方法的程序也不会继续执行下去,而是搜索一个可以处理该异常异常...
  • Java 如何抛出异常、自定义异常

    万次阅读 多人点赞 2017-06-13 23:18:02
    2、throw : 将产生的异常抛出(强调的是动作),抛出的既可以是异常的引用,也可以是异常对象。(位置: 方法体内)3、throws : 如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来...
  • Java中,当定义的方法可能产生异常时,程序员必须抛出可能的异常抛出异常的两种方式,一是在方法内部用throw语句,二是在方法定义时用throws关键字1.throw语句在Java中,throw语句用于抛出一个异常异常的具体...
  • Java异常抛出,捕获机制
  • Java 如何抛出异常、自定义异常、手动或主动抛出异常
  • java自定义异常抛出

    千次阅读 2018-10-03 18:49:08
    java自定义异常抛出 public class HelloWorld { public static void main(String []args) { System.out.println("Hello World!"); try{ exceptiona(); }catch(Exception e){ System.out....
  • Java 自定义异常 异常抛出

    千次阅读 2017-08-14 12:36:31
    /* 对于角标是整数不存在 可以用角标越界表示 对于负数为角标的情况 准备用负数角...注意:如果让一个类称为异常类,必须要继承异常体系,因为只有称为体系的子类才具备可性 才可以被两个关键字 所操作,throws thro
  • java 异常抛抛出的影响

    千次阅读 2017-01-22 18:37:58
    对于java中的异常问题,都知道需要try/catch操作,然而有的时候,还需要throws操作,try/catch操作可能会影响到程序的运行。 public class Test { public static void main(String[] args) { add(); join(); } ...
  • Java异常处理和异常抛出

    千次阅读 2019-02-21 13:11:44
    生活中的异常是指那些有异于常态,和正常情况不一样,有问题的状态,编程世界中的异常是指阻止当前方法或作用域继续执行的状态。比如,程序要打开一个不存的文件、网络连接中断、除零操作、操作数...一.Java异常体系...
  • Java 异常抛出异常

    千次阅读 2018-09-15 18:06:18
    1.throw用于抛出具体异常类的对象,一般用于方法体中。   2.什么时候使用:当所写的代码因不满足某些条件致使程序无法运行时可以借助throw抛出一个异常对象提醒程序员。         3.当b为0时不满足下面...
  • java 异常之手动抛出 和 自动抛出

    千次阅读 2018-11-01 23:40:05
    java 异常之手动抛出 和 自动抛出1.java异常处理机制的两类 1.java异常处理机制的两类 抓:异常的处理,有两种方式 ① try-catch-finally ② throws 抛: ① 自动抛出 可以理解为所有没有使用throw关键字的...
  • 1. java if(条件){ throw new RuntimeException("描述。。。"); //直接手动抛出异常 } 2. python if 条件: raise RuntimeError('描述。。。') #直接手动抛出异常
  • 异常类型不同,抛出异常的方法也不同,分为:系统自动抛出异常、指定方法抛 出的异常。 3.系统定义的异常由系统抛出;指定方法抛出异常需使用关键字throw或throws; 我们主要讨论由方法抛出异常用法。 1....
  • java如何抛出异常

    千次阅读 2019-02-27 21:12:22
    1.什么时候抛出异常? 如果你觉得某些”问题”解决不了了,那么你就可以抛出异常了。比如,你在写一个service,其中在写到某段代码处,你发现可能会产生问题,那么就请抛出异常吧,相信我,你此时抛出异常将是一个最佳...
  • java捕获异常抛出异常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如何抛出异常

    千次阅读 2016-04-12 14:30:43
    JAVA如何抛出异常  分享| 2011-07-07 13:54mengmeng2xiao | 浏览 49337 次  java 2011-07-07 13:59 #2016年高质量新标准全面升级!# 提问者采纳 如果你知道你写的某个函数有...
  • java异常抛出

    千次阅读 2019-03-20 09:48:30
    //代码1 public static void test() throws Exception { ... System.out.println("异常后"); //编译错误,「无法访问的语句」 } //代码2 try{ throw new Exception("参数越界"); }catch(Exceptio...
  • Java异常抛出和自定义异常

    千次阅读 2017-04-14 16:54:57
    那么是如何抛出异常的呢?需要用到2个关键字:throw和throws。public void 方法名(参数列表) throws 异常列表 { //调用会抛出异常的方法 //或者 throw new Exception(); }自定义异常class 自定义异常类 extends ...
  • java重新抛出异常

    2017-09-01 19:55:31
    如果只是把当前异常对象重新抛出,那么printStackTrace()方法显示的将是原来抛出点的调用栈信息,而非重新抛出点的信息。要想更新这个信息,可以调用fillStackTrace()方法并返回一个Throwable对象,它是通过把当前...
  • 1,Java异常类对象除在程序执行过程中出现异常时由系统自动生成并抛出,也可根据需要使用人工创建并抛出。 2首先要生成异常类对象,然后通过throw语句实现抛出操作(提交给Java运行环境)。 可以抛出的异常必须是...
  • Java 异常,关于业务中异常抛出的使用总结 异常可作为正常的错误状态使用,如"在业务层中,判断到用户不存在,可以直接抛出异常信息,在Web层接口中进行捕获,并返回错误码",这是正确的错误信息返回。这样做的益处...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 29,573
精华内容 11,829
关键字:

java异常抛出

java 订阅