01 自定义异常

1 自定义异常

  • 不必拘泥于Java 已有的异常类型。
  • Java 异常体系不可能预见你将报告的所有错误。
  • 要自己定义异常类,必须从已有的异常类继承,最好是选择意思相近的异常类继承。
package com.hcong.exceptions;

/**
 * @Classname FullConstructors
 * @Date 2023/4/15 13:42
 * @Created by HCong
 */
class MyException extends Exception {
    MyException() {
    }

    MyException(String msg) {
        super(msg);
    }
}

public class FullConstructors {
    public static void f() throws MyException {
        System.out.println("Throwing MyException from f()");
        throw new MyException();
    }

    public static void g() throws MyException {
        System.out.println("Throwing MyException from g()");
        throw new MyException("Originated in g()");
    }

    public static void main(String[] args) {
        try {
            f();
        } catch (MyException e) {
            e.printStackTrace(System.out);
        }

        try {
            g();
        } catch (MyException e) {
            e.printStackTrace(System.out);
        }
    }
}

Throwing MyException from f()
com.hcong.exceptions.MyException
	at com.hcong.exceptions.FullConstructors.f(FullConstructors.java:20)
	at com.hcong.exceptions.FullConstructors.main(FullConstructors.java:30)
Throwing MyException from g()
com.hcong.exceptions.MyException: Originated in g()
	at com.hcong.exceptions.FullConstructors.g(FullConstructors.java:25)
	at com.hcong.exceptions.FullConstructors.main(FullConstructors.java:36)

Process finished with exit code 0

2 异常与记录日志

package com.hcong.exceptions;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.logging.Logger;

/**
 * @Classname LoggingExceptions
 * @Date 2023/4/15 14:05
 * @Created by HCong
 */
class LoggingException extends Exception {
    private static Logger logger = Logger.getLogger("LoggingException");

    LoggingException() {
        StringWriter trace = new StringWriter();
        printStackTrace(new PrintWriter(trace));
        logger.severe(trace.toString());
    }
}

public class LoggingExceptions {
    public static void main(String[] args) {
        try {
            throw new LoggingException();
        } catch (LoggingException e) {
            System.err.println("Caught " + e);
        }

        try {
            throw new LoggingException();
        } catch (LoggingException e) {
            System.err.println("Caught " + e);
        }
    }
}

415, 2023 4:37:43 下午 com.hcong.exceptions.LoggingException <init>
严重: com.hcong.exceptions.LoggingException
	at com.hcong.exceptions.LoggingExceptions.main(LoggingExceptions.java:25)

Caught com.hcong.exceptions.LoggingException
415, 2023 4:37:43 下午 com.hcong.exceptions.LoggingException <init>
严重: com.hcong.exceptions.LoggingException
	at com.hcong.exceptions.LoggingExceptions.main(LoggingExceptions.java:31)

Caught com.hcong.exceptions.LoggingException

Process finished with exit code 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是聪聪黄吖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值