Re: Чому так? або 100 питань по Java
Поясніть за assert, побачив ось такий код
package io.netty.example.time;
public class TimeServerHandler extends ChannelInboundHandlerAdapter {
@Override
public void channelActive(final ChannelHandlerContext ctx) { // (1)
final ByteBuf time = ctx.alloc().buffer(4); // (2)
time.writeInt((int) (System.currentTimeMillis() / 1000L + 2208988800L));
final ChannelFuture f = ctx.writeAndFlush(time); // (3)
f.addListener(new ChannelFutureListener() {
@Override
public void operationComplete(ChannelFuture future) {
assert f == future;
ctx.close();
}
}); // (4)
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {
cause.printStackTrace();
ctx.close();
}
}
Ну погуглив, знайшов відразу статтю на Хабрі, ну там написано, що ассерти потрібні для відловлювання помилок.
А яка різниця між ассертом і try-блоком?
І як, взагалі, використовувати ті ассерти? Я от пишу так
public class main {
public static void main(String[] args) {
int i=5;
assert i==20;
System.out.print("Hello");
}
}
Нічого не відбувається, програма виводить Hello та успішно завершується, а потім пишу так
public class main {
public static void main(String[] args) {
int i=5;
assert i==5;
System.out.print("Hello");
}
}
І відбувається те саме