gpt4 book ai didi

java - 将 super/this 构造函数调用中抛出的异常包装到其他异常中

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:04:26 25 4
gpt4 key购买 nike

我希望我的模块的 api 仅在出现任何错误且模块无法执行其任务时抛出 MyPackageSpecificException。 (原始异常将作为 MyPackageSpecificException 的原因给出)。

现在,对于一个构造函数,我需要一个 URL 作为参数来定位资源。我还想制作一个替代构造函数,可以为其提供 URL 的字符串表示形式:

public MyClass(String urlString) throws MalformedURLException{
this(new URL(urlString));
}

由于 URL 构造函数抛出 MalformedURLException,我想通过执行以下操作将其包装到 MyPackageSpecificException 中:

public MyClass(String urlString) throws MyPackageSpecificException{
try{
this(new URL(urlString));
} catch (MalformedURLException e){
throw new MyPackageSpecificException(e);
}
}

但是,以上是无效的,因为 super() 或 this() 构造函数调用必须发生在构造函数的第一行。

如果 super() 或 this() 构造函数抛出一个我想包装到其他东西中的异常,同样的问题也会出现。

我该如何解决?还是我正在尝试做不好的做法?

最佳答案

尝试以下操作:

public class MyClass
{
private URL url;

public MyClass(URL url)
{
this.url = url;
}

public MyClass(String urlString) throws MyPackageSpecificException
{
this(toURL(urlString));
}

private static URL toURL(String urlString) throws MyPackageSpecificException
{
try
{
return new URL(urlString));
}
catch (MalformedURLException e)
{
throw new MyPackageSpecificException(e);
}
}
}

关于java - 将 super/this 构造函数调用中抛出的异常包装到其他异常中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1276652/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com