java的异常抛出throws和throw的简单使用

前提:

当在程序测试时,如果你需要定义一个自己的异常,而非现在已经存在的异常,这个时候你需要用到throws和throw,try-catch只是一个简单的捕获异常的过程。

代码如下:

package org.axc.com.Action;

import java.lang.Exception;
public class TestException {
    public static void count(int x) throws MyException{
        if(x>0) {
            throw new MyException("发生了自定义的异常");
        }
    }

    public static void main(String[] args) {
//      自己定义的异常如下
        try {
            count(3);
        } catch (MyException e) {
            e.printStackTrace();
        }

//      通过try-catch正常触发的异常
        try {
            int num=1/0;
        }catch(Exception e) {
            System.out.println(e);
        }
    }
} 

class MyException extends Exception { // 创建自定义异常类
  public MyException(String ErrorMessagr) { // 父类方法
      super(ErrorMessagr);
  }
}

其实throw的使用很简单
首先你必须要定义一个异常类,因为你要自己抛出一个以前没有见过的异常
其次你要写你定义的这个异常类的构造函数(可以调用父类的),因为要抛出我们自己写的异常信息
再次需要在想要抛出异常的方法后写throws XXX,并在方法中写出想要抛出异常的信息(throw new XXX("自定义异常信息"))
最后,在需要定义的调用时用try{}catch(XXX e){}

Exception原码:

链接:https://blog.csdn.net/hackersuye/article/details/84193536
感觉看原码,还是有一些收获的。

原文地址:https://www.cnblogs.com/Anxc/p/11329978.html

时间: 2024-08-11 01:26:04

java的异常抛出throws和throw的简单使用的相关文章

C# 中异常抛出捕获机制--throw / try,catch,finally

try { messagebox.show("true"); } catch { messagebox.show("false"); } finally { messagebox.show("finally"); } notes:      抛出异常用 throw new exception,捕获异常用 try..catch..finally try ... catch 的目的是解决程序在出现错误时无法继续执行下去的问题. try不一定只能和ca

(转)spring异常抛出触发事务回滚策略

背景:在面试时候问到事务方法在调用过程中出现异常,是否会传递的问题,平时接触的比较少,有些懵逼. spring异常抛出触发事务回滚策略 Spring.EJB的声明式事务默认情况下都是在抛出unchecked exception后才会触发事务的回滚 测试用业务逻辑方法: /** * 如果在spring事务配置中不为切入点(如这里的切入点可以定义成test*)配置事务在什么情况下回滚(格式:-引起回滚的异常类型) * 则spring默认只会在service方法抛出unchecked exceptio

swif-throws异常抛出

import UIKit enum VendingMachineError: Error { case invalidSelection //选择无效 case insufficientFunds(coinsNeeded: Int) //金额不足 case outOfStock //缺货 } struct Item { var price: Int var count: Int } class VendingMachine { var inventory = [ "Candy Bar"

出错的方法有可能是JDK,也可能是程序员写的程序,无论谁写的,抛出一定用throw

应对未检查异常就是养成良好的检查习惯. 已检查异常是不可避免的,对于已检查异常必须实现定义好应对的方法. 已检查异常肯定跨越出了虚拟机的范围.(比如"未找到文件") 如何处理已检查异常(对于所有的已检查异常都要进行处理): 首先了解异常形成的机制: 当一个方法中有一条语句出现了异常,它就会throw(抛出)一个例外对象,然后后面的语句不会执行返回上一级方法,其上一级方法接受到了例外对象之后,有可能对这个异常进行处理,也可能将这个异常转到它的上一级. 对于接收到的已检查异常有两种处理方式

异常抛出与捕获的思考

异常处理的思考 在java中异常分为两类.一.检查性异常.二.非检查性异常(运行时异常) 二者的区别:检查性异常需要显式try-catch或者throw.运行时异常可以不用捕获. 对于检查性异常由于必须捕获,所有并不需要太多的讨论(在设计异常的时候需要考虑).主要讨论运行时异常的抛出与捕获. 运行时异常的正确捕获和抛出,能够让系统代码更加简洁与rd只需要关系正常业务,对于不正常业务则交由异常处理. 现在存在的困扰: 1.每调用一个其他方法,都需要考虑与分析这个方法是不是存在异常,影响正常业务流程

异常处理中throws和throw的区别?

异常处理中throws和throw的区别: 1.作用不同:throw用于程序员自行产出并抛出异常:throws用于声明在该方法内抛出了异常 2.使用的位置不同:throw位于方法体内部,可以作为单独语句使用:throws必须跟在方法参数列表的后面,不能单独使用. 3.内容不同:throw抛出一个异常对象,且只能是一个:throws后面跟异常类,而且可以有多个 原文地址:https://www.cnblogs.com/suger-4/p/12192418.html

C++中异常规格(异常抛出表)和 成员初始化表 的放置先后顺序

测试代码如下 #include <iostream> #include <cstdio> class CPoint{ public: CPoint(int x){ printf("has synax\n"); } CPoint(){ printf("no synax\n"); } }; class Point : public CPoint{ public: Point()throw() :CPoint(1){ } }; Point p; i

AspectJ的注解开发AOP:异常抛出通知的学习

异常抛出通知使用@AfterThrowing 在切面类中配置: import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import java.math.BigInteger; @Aspect public class aspectj { // @Before(value = "execution(* com.AspecJ.xiaomaoDao.*(..))") // publ

Python之异常抛出机制

异常抛出机制 : 常见的Python异常: