精华内容
下载资源
问答
  • 抛出异常代码示例

    2015-05-09 14:40:43
    抛出异常简单代码示例,JAVA运行,希望对大家有所帮助
  • 主要介绍了JAVA抛出异常的三种形式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要给大家介绍了java异常抛出代码是否会继续执行,文章通过几种情况的代码示例给大家详细分析了这个情况,有需要的朋友们可以参考借鉴,下面来一起看看吧。
  • Java异常之抛出异常详解和代码举例

    千次阅读 2020-06-06 14:20:45
    抛出异常 自定义异常类 抛出异常 1.在捕获异常之前,必须有一段代码生成并抛出一个异常对象。 2.异常类型不同,抛出异常的方法也不同,分为:系统自动抛出的异常、指定方法抛 出的异常。 3.系统定义的异常由...

    Java语言的异常

    1. 异常处理机制
    2. 异常处理类
    3. 异常的处理
    4. 抛出异常
    5. 自定义异常类
    抛出异常 
    	1.在捕获异常之前,必须有一段代码生成并抛出一个异常对象。 
    	2.异常类型不同,抛出异常的方法也不同,分为:系统自动抛出的异常、指定方法抛 出的异常。 
    	3.系统定义的异常由系统抛出;指定方法抛出的异常需使用关键字throwthrows; 
    我们主要讨论由方法抛出的异常用法。 
    	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(); 
    		} 
    	} 
    } 
     
     
    
    
    示例2package 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("程序运行结束!!"); 
    		} 
    	} 
    } 
    
    
    示例3package 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"); 
    	} 
    }  
    
    示例2package 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 自定义异常和抛出异常的练习demo
  • JAVA抛出异常的三种形式

    万次阅读 多人点赞 2018-10-03 11:33:55
    一、系统自动抛出异常 当程序语句出现一些逻辑错误、主义错误或者类型转换错误时,系统会自动抛出异常 例一 public static void main(String[] args) { int a = 5; int b = 0; System.out.println( a / b);...

    一、系统自动抛出异常

    当程序语句出现一些逻辑错误、主义错误或者类型转换错误时,系统会自动抛出异常
    例一

    public static void main(String[] args) {
    	int a = 5;
    	int b = 0;
    	System.out.println( a / b);
    }
    

    运行结果,系统会自动抛出ArithmeticException异常

    Exception in thread "main" java.lang.ArithmeticException: / by zero
    	at io.renren.modules.sys.controller.SysUserController.main(SysUserController.java:154)
    

    例二

    public static void main(String[] args) {
    	String str = "abc";
    	System.out.println(Integer.parseInt(str));
    }
    

    运行结果,系统会抛出NumberFormatException异常

    Exception in thread "main" java.lang.NumberFormatException: For input string: "abc"
    	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    	at java.lang.Integer.parseInt(Integer.java:580)
    	at java.lang.Integer.parseInt(Integer.java:615)
    	at io.renren.modules.sys.controller.SysUserController.main(SysUserController.java:153)
    

    二、throw

    throw是语句抛出一个异常,一般是在代码的内部,当程序出现某种逻辑错误时同程序主动抛出某种特定类型的异常

    public static void main(String[] args) {
    	String str = "NBA";
    	if (str.equals("NBA")) {
    		throw new NumberFormatException();
    	} else {
    		System.out.println(str);
    	}
    }
    

    运行结果,系统会抛出NumberFormatException异常

    Exception in thread "main" java.lang.NumberFormatException
    	at io.renren.modules.sys.controller.SysUserController.main(SysUserController.java:154)
    

    三、throws

    throws是方法可能会抛出一个异常(用在声明方法时,表示该方法可能要抛出异常)
    public void function() throws Exception{......}
    当某个方法可能会抛出某种异常时用于throws 声明可能抛出的异常,然后交给上层调用它的方法程序处理

    public static void testThrows() throws NumberFormatException {
    	String str = "NBA";
    	System.out.println(Integer.parseInt(str));
    }
    
    public static void main(String[] args) {
    	try {
    		testThrows();
    	} catch (NumberFormatException e) {
    		e.printStackTrace();
    		System.out.println("非数直类型不能强制类型转换");
    	}
    }
    
    

    运行结果

    java.lang.NumberFormatException: For input string: "NBA"
    	at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    	at java.lang.Integer.parseInt(Integer.java:580)
    	at java.lang.Integer.parseInt(Integer.java:615)
    	at io.renren.modules.sys.controller.SysUserController.testThrows(SysUserController.java:153)
    	at io.renren.modules.sys.controller.SysUserController.main(SysUserController.java:158)
    非数直类型不能强制类型转换
    

    throw与throws的比较

    1、throws出现在方法函数头,而throw出现在函数体。
    2、throws表示出现异常的一种可能性,并不一定会发生这些异常,throw则是抛出了异常,执行throw则一定抛出了某种异常对象。
    3、两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但不会由函数去处理异常,真正的处理异常由函数的上层调用处理。

    编程习惯

    1、在写程序时,对可能会出现异常的部分通常要用try{…}catch{…}去捕捉它并对它进行处理;
    2、用try{…}catch{…}捕捉了异常之后一定要对在catch{…}中对其进行处理,那怕是最简单的一句输出语句,或栈输入e.printStackTrace();
    3、如果是捕捉IO输入输出流中的异常,一定要在try{…}catch{…}后加finally{…}把输入输出流关闭;
    4、如果在函数体内用throw抛出了某种异常,最好要在函数名中加throws抛异常声明,然后交给调用它的上层函数进行处理。

    最后推荐一款分分钟在线搭建SpringBoot + Mybatis框架

    地址:https://blog.csdn.net/qq_22067469/article/details/90523169

    展开全文
  • java如何抛出异常

    千次阅读 2019-02-27 21:12:22
    比如,你在写一个service,其中在写到某段代码处,你发现可能会产生问题,那么就请抛出异常吧,相信我,你此时抛出异常将是一个最佳时机 2.抛出怎么样的异常? 异常的抛出不仅仅是throw掉或者catch掉,而也应该进行...

    1.什么时候抛出异常?

    如果你觉得某些”问题”解决不了了,那么你就可以抛出异常了。比如,你在写一个service,其中在写到某段代码处,你发现可能会产生问题,那么就请抛出异常吧,相信我,你此时抛出异常将是一个最佳时机

    2.抛出怎么样的异常?

      异常的抛出不仅仅是throw掉或者catch掉,而也应该进行异常的业务逻辑的处理所以本身也可以看做if--else的这样的一种分支进行处理掉

    传统的项目都是以MVC框架为基础进行开发的,本文主要从使用restful风格接口的设计来体验一下异常处理的优雅。

    我们把关注点放在restful的api层(和web中的controller层类似)和service层,研究一下在service中如何抛出异常,然后api层如何进行捕获并且转化异常。

    使用的技术是:spring-boot,jpa(hibernate),mysql,

    1.对于入参参数的判断:

       有两个重要的工具类

    1. Guava中的Preconditions类实现了很多入参方法的判断
    2. jsr 303的validation规范(目前实现比较全的是hibernate实现的hibernate-validator)
    3. 如果使用了这两种推荐技术,那么入参的判断会变得简单很多。推荐大家多使用这些成熟的技术和jar工具包,他可以减少很多不必要的工作量。我们只需要把重心放到业务逻辑上。而不会因为这些入参的判断耽误更多的时间

    2.我们经常说的模型其实就是指的是实体模型,由实体模型之间的关系构成了整个逻辑之间的关系,而这个实体模型之间的关系其实也是数据库数据之间的关系.所以这个就是模型的概念

    根据项目场景来看,需要两个domain模型,一个是用户实体,一个是地址实体

    对于约束条件的总结如下:

    1. 基本判断约束(null值等基本判断)
    2. 实体属性约束(满足jsr 303等基础判断)
    3. 业务条件约束(需求提出的不同的业务约束)
    4. 对于service中的抛出异常,笔者认为大致有两种抛出的方法:

    5. 抛出带状态码RumtimeException异常
    6. 抛出指定类型的RuntimeException异

    api异常设计

    大致有两种抛出的方法:

    1. 抛出带状态码RumtimeException异常
    2. 抛出指定类型的RuntimeException异常
    3. 这个是在设计service层异常时提到的,通过对service层的介绍,我们在service层抛出异常时选择了第二种抛出的方式,不同的是,在api层抛出异常我们需要使用这两种方式进行抛出:要指定api异常的类型,并且要指定相关的状态码,然后才将异常抛出,这种异常设计的核心是让调用api的使用者更能清楚的了解发生异常的详细信息,除了抛出异常外,我们还需要将状态码对应的异常详细信息以及异常有可能发生的问题制作成一个对应的表展示给用户,方便用户的查询。(如github提供的api文档,微信提供的api文档等),还有一个好处:如果用户需要自定义提示消息,可以根据返回的状态码进行提示的修改。
    4. 设计api层异常时,正如我们上边所说的,需要提供错误码和错误信息,那么可以这样设计,提供一个通用的api超类异常,其他不同的api异常都继承自这个超类:

     

    展开全文
  • java抛出异常代码继续执行的情况

    万次阅读 2017-08-08 18:17:42
    java抛出异常代码继续执行的情况java抛出异常后下面的代码是否还会执行?例如下面情况public void add(int index, E element){ if(size >= elements.length) { throw new RuntimeException("顺序表已满...

    java抛出异常后下面的代码是否还会执行?例如下面情况

    public void add(int index, E element){
        if(size >= elements.length) {
            throw new RuntimeException("顺序表已满,无法添加"); 
            //return;  //是否需要?
        }
        ....
    }

    测试代码:

    //代码1
    public static void test() throws Exception  {
    
        throw new Exception("参数越界"); 
        System.out.println("异常后"); //编译错误,「无法访问的语句」
    }
    //代码2
    try{
        xxxx...
        throw new Exception("参数越界"); 
        system.out.println("继续执行后续代码"); //前面抛出异常,不能执行
    }catch(Exception e) {
        e.printStackTrace();
    }
    System.out.println("异常后");//可以执行
    //代码3
    if(true) {
        throw new Exception("参数越界"); 
    }
    System.out.println("异常后"); //抛出异常,不会执行

    总结

    1. 若一段代码前有异常抛出,并且这个异常没有被捕获,这段代码将产生编译时错误「无法访问的语句」。如代码1
    2. 若一段代码前有异常抛出,并且这个异常被try…catch所捕获,如代码2,则有两种情况:
      • 若该代码在try中抛出异常位置之后,则不执行;
      • 若在整个try-catch之后,且catch语句中没有抛出新的异常,则这段代码能够被执行,否则,同第1条。
    3. 若在一个条件语句中抛出异常,则程序能被编译,但后面的语句不会被执行。如代码3

    运行时异常与非运行时异常

    • 运行时异常是RuntimeException类及其子类的异常,是非受检异常,如NullPointerException、IndexOutOfBoundsException等。由于这类异常要么是系统异常,无法处理,如网络问题;
      要么是程序逻辑错误,如空指针异常;JVM必须停止运行以改正这种错误,所以运行时异常可以不进行处理(捕获或向上抛出,当然也可以处理),而由JVM自行处理。Java Runtime会自动catch到程序throw的RuntimeException,然后停止线程,打印异常。
    • 非运行时异常是RuntimeException以外的异常,类型上都属于Exception类及其子类,是受检异常。非运行时异常必须进行处理(捕获或向上抛出),如果不处理,程序将出现编译错误。一般情况下,API中写了throws的Exception都不是RuntimeException。

    常见运行时异常
    常见运行时异常

    常见非运行时异常
    这里写图片描述

    展开全文
  • 1. 抛出异常后的代码执行情况 下面使用三段代码进行测试 代码1 public static void test1() throws Exception { throw new Exception("参数越界"); System.out.println("异常后"); //编译错误,「无法访问的语句...
  • java抛出异常的几种情况

    千次阅读 2019-10-24 17:44:01
    1. 编译错误 //代码1 public static void test() throws Exception { ... System.out.println("异常后"); //编译错误,「无法访问的语句」 } 2.可以执行 //代码2 try{ throw new Exception("参数越界"); }...
  • java抛出异常代码继续运行问题探究 1、package com.baofoo.admin.test; import lombok.extern.slf4j.Slf4j; import org.junit.Test; /** * Created by BF100 on 2018/4/12. */ @Slf4j public class ...
  • Java 如何抛出异常、自定义异常

    万次阅读 多人点赞 2017-06-13 23:18:02
    一、异常的抛出 1、定义 : 一个...(位置: 方法体内)3、throws : 如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常。用它修饰的方法向调用者表明该方法可能会抛出异
  • 今天遇到一个问题,在下面的代码中,当抛出运行时异常后,后面的代码还会执行吗,是否需要在异常后面加上return语句呢? public void add(int index, E element){ if(size >= elements.length) { throw new ...
  • Java的声明抛出异常

    千次阅读 2018-07-29 17:26:11
    声明抛出异常 这个体系中的所有类和对象都具备一个独有的特点;就是可抛性。可抛性的体现:就是这个体系中的类和对象都可以被throws和throw两个关键字所操作。 如果一个方法(中的语句执行时)可能生成某种异常,...
  • 今天在项目中遇到了一个问题,就是在java抛出异常后,后面的代码是否能继续执? 然后就写了几个Test案例测试了一下: 1.Test1 Test1的结果: 由Test1的结果可以知道:throw new RuntimeException(...
  • java抛出异常 (try/catch/finally)

    千次阅读 2019-03-19 14:34:08
    把有风险的程序代码包含在try/catch块中,编译器会放心很多。 因为try/catch块会告诉编译器你确实知道所调用的方法会有风险,并且也准备好要处理它。如果要处理异常情况,就把异常处理程序放在catch块中。 import ...
  • Java 捕获和抛出异常

    万次阅读 2019-05-08 19:59:59
    Java中把非正常情况分为两种:异常(Exception)和错误(Error),其中Error错误一般是指与虚拟机相关的问题,这种错误无法恢复或不可能捕获,而对于Exception异常我们可以使用try…catch进行捕获。try…catch不允许...
  • java异常抛出代码还会继续执行吗 在下面的代码中,当抛出运行时异常后,后面的代码还会执行吗,是否需要在异常后面加上return语句呢? public void add(int index, E element){ if(size &gt;= elements....
  • Java-抛出异常、自定义异常类

    千次阅读 2018-12-10 22:50:07
    异常处理常用方法: 常用的异常处理方法有: 一、try()catch() 语句 二、throw / throws 语句 三、自定义异常类 用途: 众所周知,当程序运行过程中,如果遇到了错误(比如数组下标越界,空指针等)程序就会...
  • Java异常处理和异常抛出

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

    千次阅读 2019-02-25 16:04:35
    if (true){ throw new NullPointerException(); }
  • java 抛出异常后,还会执行后面代码吗? 比如: 方法:{ try{ //可能出错语句块 }catch{ //错误 } return 。。 } 如果执行了catch语句块, 那么这个return还会执行吗? 谁能讲解一下,Java错误异常的机制...
  • java 捕获异常还是抛出异常

    千次阅读 2019-01-19 23:14:02
    而hadoop中很多方法的声明是有异常抛出的,而我的系统中的很多方法的声明都没有抛出异常。只是判断了异常情况,并输出了错误提示,但是并没有抛出异常。 org.apache.hadoop.hdfs.protocol包下的Block类的readFi...
  • 假设一个Java程序运行期间出现了一个错误。为什么会报错呢? -----文件包含了错误信息? -----网络连接出现了问题? -----使用了无效的数组下标? -----试图使用一个没有被赋值的对象引用? 用户期望在出现错误而...
  • Java抛出异常执行顺序

    千次阅读 2017-01-04 10:36:55
    尾巴执行 这例子说明 1、抛出异常的时候,内部catch已经处理了,外面的的catch就不执行了,但是内外finally内部的代码都会执行。 2、catch中如果有return。会执行finally的内部代码,finally后面的代码就不会执行了...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 452,442
精华内容 180,976
关键字:

java抛出异常代码

java 订阅