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,因此在内部就无需捕获了。
代价就是一旦发生异常,程序会立刻退出。*/
posted @   xuchaoxin1375  阅读(16)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2023-09-04 python3_turtle的安装(更确切的是说,是如何成功调用)
2023-09-04 归纳法@完全归纳@不完全归纳
点击右上角即可分享
微信分享提示