我正在阅读有关Java中已检查和未检查的异常的文章,并找到此文章/链接:https
:
//projectlombok.org/disableCheckedExceptions.html
根据这篇文章,这只是为javac开发的黑客。
考虑下面的代码片段:
import java.io.*;
class Example
{
public static void main(String args[]) throws IOException
{
FileInputStream fis = null;
fis = new FileInputStream("myfile.txt");
int k;
while(( k = fis.read() ) != -1)
{
System.out.print((char)k);
}
fis.close();
}
}
在这里我不得不写, public static void main(String args[]) throws IOException
因为我试图打开一个文件。在这里,“
throws”子句是必须的。没有它,我会得到一个错误。如果我确定要打开的文件的存在怎么办。提到的位置中的iemyfile.txt。在某些时候,您可能会觉得代码不需要检查异常。
Java是否提供了根据需要禁用检查异常的功能?
即使做了很多研究,我也找不到合适的答案。
Java是否提供了根据需要禁用检查异常的功能?
没有官方的设施,但是有一些变通办法可以在需要时使用:
首先,由于有两个 检查 和 未经检查
的Java异常,使用unchecked异常可能是一种选择。未检查所有源自RuntimeException的异常:
RuntimeException是在Java虚拟机的正常操作期间可能引发的那些异常的超类。一个方法不需要在其throws子句中声明RuntimeException的任何子类,这些子类可能在该方法的执行期间被抛出但未被捕获。
有趣的阅读在这里,在这里。
然后是类型擦除,它允许在不声明它的情况下抛出一个检查的异常。
这就是龙目岛用于@SneakyThrows的项目
import lombok.SneakyThrows;
public class SneakyThrowsExample implements Runnable {
@SneakyThrows(UnsupportedEncodingException.class)
public String utf8ToString(byte[] bytes) {
return new String(bytes, "UTF-8");
}
@SneakyThrows
public void run() {
throw new Throwable();
}
}
请谨慎使用:
请注意,不可能直接捕获偷偷地抛出的检查类型,因为javac不允许您为try主体中没有方法调用声明为抛出的异常类型编写catch块。
最后,只有编译器关心被检查的异常,它根本不是jvm的一部分。一旦您经过编译器阶段,一切皆有可能。因此,直接编写字节码或使用禁用了检查异常的javac版本会完全绕开它们。
我正在开发一个使用JBoss RESTEasy(RESTEasy-jaxrs-3.0.8)的Web应用程序,但我想禁用RoleBasedSecurityFilter。java,只使用我自己的自定义类(它也实现,就像类一样,它们都是安全过滤器)。 这样做的原因是RoleBasedSecurityFilter.java的第43行调用了一个isUserInRole()方法,该方法在我的应用程序中总是返回
问题内容: 是否可以在tomcat的URL中关闭jsessionid?jsessionid似乎对搜索引擎不太友好。 问题答案: 你可以使用此过滤器仅对搜索引擎禁用,但我建议对所有响应都使用它,因为它比不友好的搜索引擎更糟糕。它公开了可用于某些安全漏洞的会话ID(更多信息)。 Tomcat 6(6.0.30之前的版本) 你可以使用tuckey重写过滤器。 Tuckey过滤器的示例配置: Tomcat
问题内容: 我使用OSGI,这是我要禁用模块的主要原因,因为我真的不需要其他模块框架。是否可以这样做,例如使用命令行选项?如果是,那怎么办? 问题答案: 没有关闭模块系统的选项-它将始终处于活动状态。这会影响对JDK内部API的访问,对Java EE模块的依赖,Split软件包以及许多其他小细节 。如果您希望应用程序在Java 9上运行,则代码和依赖项必须应对这些迁移挑战。 但是,您绝不被迫创建模
本文解释了如何禁用urllib3中的警告,但我使用的是带有请求模块的对象。出现警告是因为(ssl)参数设置为,以便访问页。 例如。
问题内容: 是否可以在不完全禁用JavaScript的情况下禁用AJAX? 问题答案: 如果您使用的是Firefox,则可以使用GreaseMonkey完成此操作。(https://addons.mozilla.org/en- US/firefox/addon/748 ) GM是用于将脚本应用于您访问的部分或全部页面的框架。我有禁用google- analytics下载的GM脚本(因为它们会使速度
对于一些网站,当我按F12按钮看到html元素,什么都没发生。为什么啊?我通过ie和谷歌chrome测试它。有什么工具可以看到这个网站的元素和媒体吗?