我已经定义了自己的预科班:
public class ProduktException extends Exception {
public ProduktException(String msg){
//null
}
public static void throwProduktNotCreatedException() throws ProduktException {
throw new ProduktException("Cannot be created!");
}
public static void throwProduktNotDeletedException () throws ProduktException {
throw new ProduktException("Cannot be deleted!");
}
}
我的问题是我在尝试时不知道如何抛弃它们:
try {
...
} catch(ProduktNotDeletedException e) {
e.toString();
}
这不起作用......但我想拥有这些结构!有什么问题?
我宣布你的答案!!!
更新
我的问题是,我不想创建几个异常类,我希望在一个类中包含所有异常。可能有解决方案吗?
答案 0 :(得分:1)
如果您需要区分不同类型的异常,只需创建两个不同的异常,可能是:
public class ProduktException extends Exception
{
public ProduktException(String msg){
//null
}
}
然后:
public class ProduktNotDeletedException extends ProduktException
{
....
}
和
public class ProduktNotCreatedException extends ProduktException
{
....
}
然后你可以抓住一个或另一个,或两者兼而有之。
try {
...
} catch(ProduktNotDeletedException e1) {
e1.toString();
} catch(ProduktNotCreatedException e2) {
e2.toString();
}
编辑:
对于单个班级,我的意思是:
public class ProduktException extends Exception {
boolean notDeleted;
boolean notCreated;
public ProduktException(String msg){
super(msg);
}
public boolean isNotDeleted() {
return(notDeleted);
}
public boolean isNotCreated() {
return(notCreated);
}
public static void throwProduktNotCreatedException() throws ProduktException {
ProduktException e = new ProduktException("Cannot be created!");
e.notCreated = true;
throw e;
}
public static void throwProduktNotDeletedException () throws ProduktException {
ProduktException e = new ProduktException("Cannot be deleted!");
e.notDeleted = true;
throw e;
}
}
然后在你的try / catch中:
try {
...
} catch(ProduktException e) {
e.toString();
if(e.isNotCreated()) {
// do something
}
if(e.isNotDeleted()) {
// do something
}
}
答案 1 :(得分:0)
你需要抓住ProduktException
,例如
try {
...
} catch (ProduktException e) {
e.toString();
}
或声明子类型,例如
public ProduktNotDeletedException extends ProduktException
您可能希望在构造函数中传递消息,因此在构造函数中添加以下内容:
super(msg);
答案 2 :(得分:0)
下面给出的语法。
class RangeException extends Exception
{
String msg;
RangeException()
{
msg = new String("Enter a number between 10 and 100");
}
}
public class MyCustomException
{
public static void main (String args [])
{
try
{
int x = 1;
if (x < 10 || x >100) throw new RangeException();
}
catch(RangeException e)
{
System.out.println (e);
}
}
}
答案 3 :(得分:0)
如果你不想为你需要抛出的每种不同类型的异常创建ProduktException的多个子类,你可以做的是在异常中包含一个代码,让你知道什么是错的。像这样:
public class ProduktException extends Exception {
private Code exceptionCode;
private String message
public ProduktException(Code code, String msg){
this.message = msg;
this.exceptionCode = code;
}
//Getters and setters for exceptionCode and message
}
代码可以是枚举,以便您的应用程序可以知道每个代码对应于特定的“问题”(产品未创建,产品未删除等)。然后你可以抛出这样的例外
throw new ProduktException(Code.PRODUCT_NOT_CREATED,
"Error while creating product");
当你抓住它时,你可以根据代码进行区分。
catch (ProduktException ex) {
if (ex.getExceptionCode().equals(Code.PRODUCT_NOT_CREATED)) {
...
}
else {
...
}
}