如果只写 e.printStackTrace(); 确实没区别,但有时候可以做一些别的事,比如想接收一个 int 类型做计算,又不想接收负数,可以用一些小技巧,比如:
- for (;;) {
- try {
- System.out.println("请输入数字:");
- i = scanner.nextInt(); // 接收键盘输入的 int 型并存入变量 i 中
- if (i < 0) {
- throw new Exception(); // 如输入小于 0 的数,视为错误输入
- }
- break;
- } catch (Exception e) {
- System.out.println("您可能输入了错误的字符。");
- scanner.nextLine();
- }
- }
复制代码
处理一般错误的时候也可以手动在 catch 里面抛出新异常,如:
- throw new RuntimeException("new RuntimeException");
复制代码
可以自定义错误信息,帮助找到错误的代码位置。
另外 e.printStackTrace() 有重载方法,可以接收 PrintWriter 和 PrintStream ,可以用来记录错误日志
|