精华内容
下载资源
问答
  • 网上的解决方法 都是复制来复制去的 导致有部分人因为 ...在spring机制中,在配置事务后,如果采用try catch 捕获异常后, 因为异常已经被捕获 , 所以事务不会滚 ,从而产生许多脏数据。  

    网上的解决方法都是复制来复制去的

    导致有部分人因为某些问题还是无法解决这个问题

    网上解决方法:

    1.Exception改为RuntimeException

    2.@Transactional(rollbackFor = Exception.class)

    3.手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly() //我还是会报错,懒得深究

    某些问题:

    旧代码并没有throws RuntimeException

    直接try catch一个throw new RuntimeException

    而修改完的代码是添加了throws RuntimException

    不用try catch,直接throw new RuntimeException

    原因:

    在spring机制中,在配置事务后,如果采用try catch 捕获异常后,因为异常已经被捕获所以事务不会滚,从而产生许多脏数据。

     

    展开全文
  • 学习如何自定义异常并且使用自定义异常

    学习如何自定义异常并且使用自定义异常

    自定义一个异常RegistException

    package com.zr;
    /*
        自定义注册异常,继承RuntimeException
     */
    public class RegistException extends RuntimeException {
        //定义无参构造方法
        public RegistException() {
            super();
        }
    
        //定义有参构造方法
        public RegistException(String message) {
            super(message);
        }
    }
    

    对异常RegistException使用

    package com.zr;
    
    import java.util.Scanner;
    /*
        对自定义异常RegistException的使用
     */
    public class DemoRegistException {
        //数据库用户名
        static String[] userNames={"张三","李四","王五"};
        public static void main(String[] args) {
            //输入注册的用户名
            System.out.println("请输入用户名:");
            Scanner sc=new Scanner(System.in);
            String username = sc.next();
    
            //循环遍历userNames数组,查询用户名是否已经存在
            for (String name : userNames) {
                //如果存在,抛出异常,中断程序
                if (name.equals(username)){
                    throw new RegistException("用户名已经存在");
                }
            }
            //如果不存在,输出注册成功
            System.out.println("注册成功");
        }
    }
    
    
    展开全文
  • Java 如何抛出异常、自定义异常

    万次阅读 多人点赞 2017-06-13 23:18:02
    一、异常的抛出 1、定义 : 一个方法不处理这个异常,而是调用层次向上传递,谁调用这个方法,这个异常就由谁来处理。2、throw : 将产生的异常抛出(强调的是动作),抛出的既可以是异常的引用,也可以是异常对象。...

    一、异常的抛出

    1、定义 : 一个方法不处理这个异常,而是调用层次向上传递,谁调用这个方法,这个异常就由谁来处理。

    2、throw : 将产生的异常抛出(强调的是动作),抛出的既可以是异常的引用,也可以是异常对象。(位置: 方法体内

    3、throws : 如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常。用它修饰的方法向调用者表明该方法可能会抛出异常(可以是一种类型,也可以是多种类型,用逗号隔开)(位置: 写在方法名 或方法名列表之后 ,在方法体之前。)

    注意 : 调用可能会抛出异常的方法,必须添加try-catch代码块尝试去捕获异常 或者 添加throws 声明 来将异常 抛出给更上一层的调用者进行处理,这里需要注意一个细节:新的异常包含原始异常的所有信息,根据这个我们可以去追溯最初异常发生的位置

    如下图所示
    这里写图片描述

    4、简单使用

    // 定义一个方法,抛出 数组越界和算术异常(多个异常 用 "," 隔开)
    	public void Test1(int x) throws ArrayIndexOutOfBoundsException,ArithmeticException{
    	
    	System.out.println(x);
    	
    	if(x == 0){
    		
    		System.out.println("没有异常");
    		return;
    	}
    	
    	//数据越界异常
    	else if (x == 1){
    		
    		int[] a = new int[3];
    		 a[3] = 5;
    	}
    	
    	//算术异常
    	else if (x == 2){
    		
    	    int i = 0;
    		int j = 5/0;
    	}
    		
    	}
    

    在main方法中调用

    public static void main(String[] args) {
    		
    		//创建对象
    		ExceptionInital object = new ExceptionInital();
    		
    		// 调用会抛出异常的方法,用try-catch块
    	    try{
    	    	
    	    	object.Test1(0);
    	    	
    	    }catch(Exception e){
    	    	
    	    	System.out.println(e);
    	    }
    
    	    // 数组越界异常
    	    try{
    	    	
    	    	object.Test1(1);
    	    }catch (ArrayIndexOutOfBoundsException e) {
    			
    	    	System.out.println("数组越界异常:"+e);
    		}
    	    
    	    
    	    // 算术异常
    	    try{
    	    	
    	    	object.Test1(2);
    	    	
    	    }catch(ArithmeticException e){
    	    	
    	    	System.out.println("算术异常:"+e);
    	    }
    	    
    	    
    	    //使用 throw 抛出异常(可以抛出异常对象,也可以抛出异常对象的引用)
    	    try{
    	    	
    	        ArrayIndexOutOfBoundsException  exception = new ArrayIndexOutOfBoundsException();
    	    	
    	    	throw exception;//new ArrayIndexOutOfBoundsException();
    	    	
    	    }catch(ArrayIndexOutOfBoundsException e){
    	    	
    	    	System.out.println("thorw抛出异常:"+e);
    	    }
    	    
    	}
    

    运行结果
    这里写图片描述

    总结下 throw 和throws 关键字的区别

    1、写法上 : throw 在方法体内使用,throws 函数名后或者参数列表后方法体前
    2、意义 : throw 强调动作,而throws 表示一种倾向、可能但不一定实际发生
    3、throws 后面跟的是异常类,可以一个,可以多个,多个用逗号隔开。throw 后跟的是异常对象,或者异常对象的引用。
    4、throws 用户抛出异常,当在当前方法中抛出异常后,当前方法执行结束(throws 后,如果有finally语句的话,会执行到finally语句后再结束。)。可以理解成return一样。

    二、自定义异常

    前面所讲的异常,都是系统自带的,系统自己处理,但是很多时候项目会出现特有问题,而这些问题并未被java所描述并封装成对象,所以对于这些特有的问题可以按照java的对问题封装的思想,将特有的问题进行自定义异常封装。在Java中要想创建自定义异常,需要继承Throwable或者他的子类Exception。

    语法

    class  自定义异常类 extends 异常类型(Exception){
    
     // 因为父类已经把异常信息的操作都完成了,所在子类只要在构造时,将异常信息传递给父类通过super 语句即可。
      // 重写 有参 和 无参  构造方法
    }
    

    例如:

    public class CustomException extends Exception {
    
    	//无参构造方法
    	public CustomException(){
    		
    		super();
    	}
    	
    	//有参的构造方法
    	public CustomException(String message){
    		super(message);
    		
    	}
    	
    	// 用指定的详细信息和原因构造一个新的异常
    	public CustomException(String message, Throwable cause){
    		
    		super(message,cause);
    	}
    	
    	//用指定原因构造一个新的异常
    	 public CustomException(Throwable cause) {
    		 
    		 super(cause);
    	 }
    	
    }
    
    // 备注: 这些方法怎么来的? 重写父类Exception的方法,那么如何查看Exception具有哪些API,快捷键:选中Exception, command+单击。windows系统 :选中Exception, control+单击。
    

    自定义异常的使用例子:
    自定义test1()方法,抛出 "我喝酒了"的异常信息,test2()方法调用test1()方法,并将异常包装成RuntimeException类型的异常,继续抛出,在main方法中调用test2()方法,并尝试捕获异常

    public void test2() {
    		
    		try{
    			
    			test1();
    			
    		}catch (CustomException e){
    			
    		   RuntimeException exception  =  new RuntimeException(e);
    		   //exception.initCause(cause)
    		   throw  exception;
    		}
    	
    	}
    	
    	public void test1() throws CustomException{
    		
    		throw new CustomException("我喝酒了");
    	}
    // main方法
    	public static void main(String[] args) {
    		
    		CustomExceptionInital object =  new  CustomExceptionInital();
    		
    		//try{
    			
    			object.test2();
    			
    		//}catch(Exception e){
    			
    		//e.printStackTrace();
    			
    		//}
    
    	}
    

    输出结果:
    这里写图片描述

    思考 ? 为什么上述demo, test1() 方法 抛出异常了,但是test1() 方法自己没办法处理,所以在 参数列表后方法体前将该异常抛出了,test2() 方法调用了test1()方法捕获其异常,并将其异常 包装成 RuntimeException 异常继续抛出,但是test2()方法却没有声明 抛出异常 ? 而且,在main 方法中,调用test2()方法的时候,也不用try-catch 代码块去捕获 异常呢 ?点击我告诉你为什么

    本篇文章demo传送门

    在这里插入图片描述

    展开全文
  • 自定义异常

    千次阅读 2015-12-24 17:18:07
    今天看书,看到了关于自定义异常类的使用,觉得很有必要记录下来供大家一起探讨。以下是书中的内容: 1.创建自定义异常类 创建自定义的异常类需要继承自Exception类,并提供含有一个String类型形参的构造方法,该...

    今天看书,看到了关于自定义异常类的使用,觉得很有必要记录下来供大家一起探讨。以下是书中的内容:

    1.创建自定义异常类

    创建自定义的异常类需要继承自Exception类,并提供含有一个String类型形参的构造方法,该形参就是异常的描述信息,可以通过getMessage()方法获得。例如:

    <span style="font-size:18px;">public class NewException extends Exception{
    
    	public NewException(String s) {
    		super(s);
    	}
    	
    }</span>

    说明

    上面代码创建了一个自定义异常类NewException,也就是说NewException是自定义异常类的名称,该类继承自Exception,该类构造方法的形参s是需要传递的异常描述信息,该信息可以通过异常类的getMessage()方法获得。

    2.使用自定义异常类

    创建完自定义异常类后,就可以在程序中使用了。使用自定义异常类可以通过throw语句抛出异常,接下来通过实例来说明自定义异常类的使用。

    自定义异常类NewException的代码如下:

    <span style="font-size:18px;">public class NewException extends Exception{
    
    	public NewException(Double r) {
    		System.out.println("发生异常,圆的半径不能小于20");
    		System.out.println("圆的半径为:"+r);
    	}
    	
    }</span>
    Test类的代码如下:

    <span style="font-size:18px;">public class Test {
    	//创建求圆的面积的方法
    	public static void showArea(double r)throws NewException{
    
    		if(r<20){
    			//抛出异常
    			throw new NewException(r);
    		}
    		//计算圆的面积
    		double area=3.14*r*r;
    		//输出圆的面积
    		System.out.println("圆的面积是:"+area);
    	}
    
    	public static void main(String[] args) {
    
    		try {
    			//调用方法,传递半径为10
    			showArea(10);
    		} catch (NewException e) {
    			//输出异常信息
    			System.out.println(e);
    		}
    
    	}
    
    }</span>

    运行结果如图:

    到这里就结束了!希望大家能够触类旁通、举一反三。每天进步一点点!努力!

    展开全文
  • python自定义异常_Python自定义异常

    千次阅读 2020-07-05 22:24:52
    python自定义异常In this tutorial we are going to learn about Python Custom Exception. If you don’t know about Python Exception Handling, we suggest you to read the previous tutorial. 在本教程中,我们...
  • Java自定义异常异常使用最佳实践

    千次阅读 2018-05-03 10:12:05
    转载自HOKING的专栏Java自定义异常异常使用最佳实践异常的分类1. 非运行时异常(Checked Exception) Java中凡是继承自Exception但不是继承自RuntimeException的类都是非运行时异常。2. 运行时异常(Runtime ...
  • 枚举类型与自定义异常

    千次阅读 2019-06-27 09:07:56
    枚举类型与自定义异常目录1、定义响应码与响应消息枚举型2、自定义异常(1)服务异常(2)业务异常3、自定义异常使用 注: 个人认为一个项目中,最好有2个自定义异常;一个是 服务 异常,一个是 业务 异常 1、定义...
  • 日常开发中,当系统提供的异常类型不能满足开发的需求时,就需要自己创建一个新的异常类来拥有自己的异常。 自定义异常类继承自 Exception 类,可以直接继承,或者间接继承。
  • 1.定义自定义异常 2.定义错误信息枚举 3.产生了自定义异常 4.抓取自定义异常并处理 到此,异常发挥出了各种提示信息,并且可以进行判断的功能了,我们可以根据异常码进行判断等等哦。想扩展,就在枚举类加一个...
  • 为什么需要自定义异常类: 我们说了Java中不同的异常类,分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的,此时我们根据自己业务的异常情况来定义异常类。例如年龄负数问题,考试成绩...
  • 自定义异常使用 在java项目中, 一般使用自定义异常对程序做一些特殊处理。使用自定义异常的方式,能更清楚的表现出程序中的逻辑问题。 如何优雅的使用异常,就是一门学问了。 本文采用枚举来处理自定义异常, 使用...
  • 自定义异常 javaCustom Exceptions or User-Defined Exceptions are very common in Java applications. We can easily create custom exception classes for different use cases. 自定义异常或用户定义的异常在...
  • java自定义异常

    万次阅读 多人点赞 2018-08-05 20:44:16
    简单介绍一下java中自定义异常类的使用 背景:这里我简单模拟登陆操作,检测到密码不正确则抛出异常 自定义异常类的使用步骤如下: 1、自定义异常类继承Exception类 /** * 自定义异常类 */ public class ...
  • 在应用程序中有时候要我们抛出自定义的异常,所以需要自定义异常类,并且需要创建一个自定义的全局异常处理类来处理异常(返回json数据或者返回指定的网页) 1.MyException.java(自定义异常类) public class ...
  • 自定义异常: 如果想在某个特定事件发生时向应用程序的用于发出一些警告信息.而事件本身不会抛出Oracle内部异常,这个异常属于应用程序的特定异常.那么就需要自定义异常. 用于定义的异常错误是通过使用raise语句来...
  • 注意:如果service业务层方法出现任何业务异常,则返回标记(自定义异常 )到web层(servlet) service层:  web层:
  • Oracle 自定义异常

    2017-03-22 09:24:50
    Oracle 自定义异常
  • 异常-自定义异常&异常类的抛出

    千次阅读 2019-03-11 23:30:11
    异常-自定义异常&amp;异常类的抛出自定义异常理论异常函数 :调用异常函数 自定义异常理论 例如负数角标这种异常在java中并没有定义过,这时候就要按照java异常的创建思想,面向对象,将负数角标进行自定义的...
  • Java中自定义异常使用

    千次阅读 2016-07-16 10:25:01
    Java中的自定义异常使用步骤: 1.定义异常,并继承Exception,分别构造无参函数和有参构造函数,并在构造函数中分别调用父类的无参构造函数和有参构造函数 package com.bluesky; public class ...
  • 自定义异常问题

    2019-04-13 09:44:27
    自定义异常问题 今天项目过程中遇到的问题:因为用的是别人封装好的处理异常的方法,没明白他的处理过程,学习了一下。整理出来给大家参考。(小白的成长之路,欢迎大家指导。) 自定义异常: 通常我们自定义异常,...
  • 用户自定义异常

    2019-09-26 00:08:22
    一般情况下,我们使用系统内部提供的异常就足够了,但是有时为了特殊的目的,必须使用用户自定义异常,本文讨论的异常处理机制,以及如何创建、抛出和捕获用户自定义异常。 1.异常处理机制 无论我们使用的是系统...
  • 自定义异常处理

    千次阅读 2018-05-14 16:41:17
    Java自定义异常处理1:自定义异常概念...在代码中检测到某个条件成立,需要抛出异常的位置,使用throw 语句抛出自定义异常类的实例在代码所在的方法后面,添加throws 字句,表示方法有一个自定义异常类型的异常信...
  • JAVA自定义异常

    2015-04-15 19:12:07
    JAVA自定义异常
  • Python 自定义异常

    千次阅读 2017-09-28 15:14:25
    Python 提供了丰富的标准异常,这些异常非常灵活,我们甚至可以根据需要进行修改以满足特定需求,所以应该尽...然而,在实际编程中,你会发现有时标准异常不够用,这就需要我们创建自定义异常来满足特殊的业务场景。
  • java 异常练习 自定义异常

    千次阅读 2018-08-02 19:49:10
    自定义异常一般要继承Exception和RuntimeException 以及它们的子类,通过自定义异常更能细化异常的问题,帮助jvm和程序员更好的理解和分析代码 创建自定义异常类 public class IllegleAgeException extends ...
  • 自定义异常使用场景为了终止一些不符合逻辑的代码的继续执行. 为了终止一些不符合逻辑的代码的继续执行. 如果某行代码的结果是不正常的,我们需要抛出异常,那么就可以使用自定义异常 ...
  • 自定义异常类的使用

    2015-08-21 17:38:37
    为什么需要自定义异常类? 因为系统中有些错误符合Java语法,但是不符合业务逻辑。 举个例子,假如说有个业务需求,返回1就应该报异常,但是JAVA  里面自带的不会有这种异常 ,这时候就需要自己定异常了! ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 532,900
精华内容 213,160
关键字:

自定义异常使用