java_异常捕获(定义异常捕获的方法)
package study.try_catch; //如果我们不捕获UnsupportedEncodingException,会出现编译失败的问题: // try...catch import java.io.UnsupportedEncodingException; import java.util.Arrays; public class CatchNecessary { public static void main(String[] args) { try { byte[] bs = toGBK("中文");/* static byte[] toGBK(@NotNull String s) throws UnsupportedEncodingException*/ System.out.println("try succeed!\n"+Arrays.toString(bs)); } catch (UnsupportedEncodingException e) { //e.printStackTrace(); System.out.println("遗憾try没成功."); System.out.println(e); } } /* static byte[] toGBK(String s) { return s.getBytes("GBK"); } 其中java.lang.String @NotNull @Contract(pure = true) public byte[] getBytes(@NonNls @NotNull String charsetName) throws java.io.UnsupportedEncodingException */ /* 编译器会报错,错误信息类似:unreported exception UnsupportedEncodingException; must be caught or declared to be thrown,并且准确地指出需要捕获的语句是return s.getBytes("GBK");。 意思是说,像UnsupportedEncodingException这样的Checked Exception,必须被捕获。 这是因为String.getBytes(String)方法定义是: public byte[] getBytes(String charsetName) throws UnsupportedEncodingException { ... }*/ /*toGBK()是我们自己定义的声明了throws UnsupportedEncodingException要求的方法,在调用的时候必须添加try...catch环绕(预期可以正常执行的那一部分(方法调用)放在try中,异常处理放在catch中*/ static byte[] toGBK(String s) throws UnsupportedEncodingException { return s.getBytes("GBK");/*public byte[] getBytes(@NonNls @NotNull String charsetName) throws java.io.UnsupportedEncodingException*/ } } /*因为在main()方法中,调用toGBK(),没有捕获它声明的可能抛出的UnsupportedEncodingException。 修复方法是在main()方法中捕获异常并处理:*/ /*在 方法定义的时候,使用throws Xxx表示该方法可能抛出的异常类型。 相应的,在调用这种带throws的方法的时候,必须强制捕获这些异常,否则编译器会报错。*/ /*可见,只要是方法声明的Checked Exception,不在调用层捕获, 也必须在更高的调用层捕获。所有未捕获的异常,最终也必须在main()方法中捕获,不会出现漏写try的情况。这是由编译器保证的。main()方法也是最后捕获Exception的机会。 如果不想写任何try代码,可以直接把main()方法定义为throws Exception: 因为main()方法声明了可能抛出Exception,也就声明了可能抛出所有的Exception,因此在内部就无需捕获了。 代价就是一旦发生异常,程序会立刻退出。*/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2023-09-04 python3_turtle的安装(更确切的是说,是如何成功调用)
2023-09-04 归纳法@完全归纳@不完全归纳