java - 创建 URL 时如何避免异常?

标签 java java-8

在 JUnit 测试包中,我创建一个 java.net.URL 对象并在各种断言语句中使用它。但是,URL 对象的构造函数会抛出必须捕获的 MalformedURLException。由于必须捕获该变量,因此必须将构造函数包装在 try/catch 中,这意味着您必须将变量放在 try/catch 之外的范围内。

示例代码:

URL ocURL = null;
try {ocURL = new URL("https://docs.oracle.com/javase/8/docs/api/java/net/URL.html");} 
catch (MalformedURLException e) {}

assertEquals(variable, ocURL)

诚然,这完全是为了美观:我不喜欢所有毫无意义的额外代码乱扔在我的屏幕上。因为我将 URL 作为字符串传递,所以我知道它会很好,因此不会抛出异常(尽管是著名的最后一句话)。

有没有办法避免声明 URL 对象,然后在 try/catch 中初始化它?有没有一种方法可以构建 java.net.URL 对象而不必捕获(不存在的)异常?

最佳答案

创建一个静态工厂方法,并仅处理 try/catch 一次:

private static URL createURL(String path) {
     try {
         return ....;
     } catch(MalformedURLException e){
         // handle somehow
         throw new RuntimeException(e);
     }
}

关于java - 创建 URL 时如何避免异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53065481/

相关文章:

Java 通配符读写权限

java - 此方法是否创建完全相同的副本? (java中的一种复制方法)

java - 通过网络传输类型 double[]

java - 使用流和 sum 方法对 BigDecimal 列表求和

java - 在 Qt 上使用 java 函数

java - 在 Eclipse 中找不到 JDBC 驱动程序,但在独立运行时找到

Java 8 Stream 函数分组到 Map,其中值是 Map

java - Instant 和 LocalDateTime 有什么区别?

java - 在 Java 中将 3D int 数组转换为八叉树

java - 如何使用Java 8的默认方法在接口(interface)中使用EntityManager实例?