Компиляция этого Java-кода:
package com.acme.javasdk;
public class Enum_Test
{
public enum MyEnum
{
NoOption (0x00),
Option1 (0x01),
Option2 (0x02),
Option3 (0x04),
Option4 (0x08),
;
long value;
MyEnum(long value)
{
this.value = value;
}
public long getValue()
{
return(value);
}
}
MyEnum option;
public void setOption(
java.util.EnumSet options
) throws java.lang.Exception
{
this.option = MyEnum.NoOption;
options.forEach(
option ->
addOption(option)
);
}
public void addOption(
MyEnum option
) throws java.lang.Exception
{
long lNewValue = this.option.value |= option.value;
if(lNewValue == MyEnum.NoOption.value)
{
throw new java.lang.Exception(
"Invalid option."
);
}
this.option.value = lNewValue;
}
}
выдает следующую ошибку, хотя метод объявляет, что может быть выброшено java.lang.Exception:
Enum_Test.java:37: error: unreported exception Exception; must be caught or declared to be thrown
[javac] addOption(option)
[javac] ^
[javac] 1 error
Даже если я обрабатываю исключение в методе:
public void setOption(
java.util.EnumSet options
) throws java.lang.Exception
{
this.option = MyEnum.NoOption;
try
{
options.forEach(
option ->
addOption(option)
);
}
catch(java.lang.Exception e)
{
throw e;
}
}
он по-прежнему генерирует ошибку, из-за которой вызов addOption(option) может вызвать необработанное исключение:
Enum_Test.java:38: error: unreported exception Exception; must be caught or declared to be thrown
[javac] addOption(option)
[javac] ^
[javac] 1 error
Подробнее здесь: https://stackoverflow.com/questions/792 ... -exception
Java.util.EnumSet.forEach, запрашивающий несообщенное исключение [дубликат] ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение