Например, исключение типа: java.net.BindException может вызывать «уже использованный адрес» (пытается связать порт, который использует другая программа) или «Permission denied» (вы не используете имеют права root, чтобы открыть этот номер порта). Я не владею классом, который бросает BindException.различают исключения одного типа
Итак, что лучше всего отличить эти «разные» исключения с одним и тем же типом?
Я делаю это, но я не знаю, если это лучшая практика:
try {
//...some scary stuffs here
}
catch (BindException e){
if (e.getMessage().contentEquals("Permission denied")){
System.out.println("ERROR**You must be ROOT to bind that port address TCP:"+defaultPort);
}
else if (e.getMessage().contentEquals("Address already in use")){
System.out.println("ERROR**Port TCP:"+defaultPort+" already in use by onother application");
}
e.printStackTrace();
}
Если вы делаете это в нескольких частях своего кода, я предлагаю вам принять его и поместить в свой класс, например, в класс утилиты. – ultrajohn
Кроме того, я хотел бы сделать подкласс для каждого типа BindException. – ultrajohn
нет; это, например, здесь; но tnx для совместной работы. –