狠狠撸

狠狠撸Share a Scribd company logo
絶対にぬるぽを出さない
We never throw NPE
JJUG CCC 2016 Spring 懇親会LT
@yy_yank
          こいつです
          ?vimmer
          ?サクラエディタicon
          ?小物SIer
          ?JavaとKotlinが好き
ヤンク(@yy_yank)
自己紹介
  ネタ枠
joke LT
大人な
Javaユーザーの皆
様においては
LT中に
それ??でしょ?
とか先に答えを
言ってはいけない
ぬるぽ
NullPointerException
「ぬるぽ
出すなよ!絶対だぞ!絶
対ぬるぽ出すなよ」
そっか
ならば
出さなければ良い
?持たず
?作らず
?持ち込まず
非ぬるぽ3原則
?持たず
?作らず
?持ち込まず
非ぬるぽ3原則
その1 持たず
非ぬるぽ3原則 ?持たず?
?NullPointerExceptionというクラスがなければそ
もそもそんな例外は発生しない
?なるほどclassファイルが無ければ良いんや
?NullPointerExceptionというクラスがなければそ
もそもそんな例外は発生しない
_人人人人人人人人人人人人人人人人_
> 突然のClassNotFoundException <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
非ぬるぽ3原則 ?持たず?
その1 持たず
失敗
?持たず
?作らず
?持ち込まず
非ぬるぽ3原則
その2 作らず
非ぬるぽ3原則 ?作らず?
?NullPointerExceptionというクラスのインスタン
スが生成されなければ
そもそもそんな例外は発生しない
非ぬるぽ3原則 ?作らず?
?java.lang.reflect.Proxyはきびしー
?ならばNullPointerExceptionクラスをバイトコー
ドエンハンス?????!!!
非ぬるぽ3原則 ?作らず?
?java.lang.reflect.Proxyはきびしー
?NullPointerExceptionクラスをバイトコードエン
ハンスしてコンスタラクタをアレすれば
?????!!!
?そこでjavassist
いや无理
?javassistはjava.langパッケージのクラスのバイト
コードをいじることは出来ない
?多分JVM起動時にすでにロードされてしまうから
非ぬるぽ3原則 ?作らず?
ならば力技だ
非ぬるぽ3原則 ?作らず?
public static void main(String... args) {
Thread.setDefaultUncaughtExceptionHandler(
(t, e) -> System.out.println(“ぬるぽなんてな
かった”));
}
??だめですか???
ですよねー
(握りつぶしだもんね)
public class NullPointerException extends
RuntimeException {
public NullPointerException() {
System.exit(0);
}
}
非ぬるぽ3原則 ?作らず?
javac NullPointerException.java
jar -xvf rt.jar java/lang
copy NullPointerException.class
java/lang/NullPointerException.class
jar -uf rt.jar
非ぬるぽ3原則 ?作らず?
javac NullPointerException.java
jar -xvf rt.jar java/lang
copy NullPointerException.class
java/lang/NullPointerException.class
jar -uf rt.jar
こいつをjdkに仕込めば…!!
非ぬるぽ3原則 ?作らず?
public static void main(String... args) {
throw new NullPointerException();
// しかし何も起こらなかった!!!
}
非ぬるぽ3原則 ?作らず?
めでたしめでたし
いや違う
(プロセス終了しちゃう)
その2 作らず
失敗
?持たず
?作らず
?持ち込まず
非ぬるぽ3原則
?ぬるぽは絶対に出るわ!当たり前やろ!
プログラマが持ち込まないほかない
?飽くなきテスト
?@NotNull @Nullableとか
?チェック制約
?バリデーション
?java.util.Optional
?Kotlin
非ぬるぽ3原則 ?持ち込まず?
絶対ぬるぽを発生させな
いのはあなたたちです!
おしまい
Ad

Recommended

尝罢司会资料(わんくま同盟名古屋勉强会#15)
尝罢司会资料(わんくま同盟名古屋勉强会#15)
You&I
?
この素晴らしい厂蚕尝に祝福を!
この素晴らしい厂蚕尝に祝福を!
__john_smith__
?
Javaて?最強のfizz buzz
Javaて?最強のfizz buzz
yy yank
?
础迟颁辞诲别谤で始めるテスト駆动开発
础迟颁辞诲别谤で始めるテスト駆动开発
YujiSoftware
?
闯补惫补でマサカリ投げてみた
闯补惫补でマサカリ投げてみた
YujiSoftware
?
Spring boot劇的ヒ?フォーアフター
Spring boot劇的ヒ?フォーアフター
orekyuu
?
碍辞迟濒颈苍ソースコート?探访
碍辞迟濒颈苍ソースコート?探访
yy yank
?
3 d pie chart circular with hole in center 10 stages style 3 powerpoint prese...
3 d pie chart circular with hole in center 10 stages style 3 powerpoint prese...
狠狠撸Team.net
?
Местная и региональная авиация
Местная и региональная авиация
Сергей Абдыкеров
?
Django introduction
Django introduction
Valeria Leonardi
?
??????????????? ??????????????? ?????????
??????????????? ??????????????? ?????????
Matumit Sombunjaroen
?
Cyclopark website re-launch
Cyclopark website re-launch
Cyclopark Kent
?
Marketing plan
Marketing plan
Prasanna Niyadagala
?
Zelula amak-zuzenketak.ppt
Zelula amak-zuzenketak.ppt
burlau voy
?
Day 4 Recap at #CannesLions 2013 / #OgilvyCannes
Day 4 Recap at #CannesLions 2013 / #OgilvyCannes
Ogilvy
?
Economia
victoria vidal
?
Comportamiento de compra del consumidor
setmonasos
?
Rocking SEO for WP - #WCLV2015
Rocking SEO for WP - #WCLV2015
Kenny Eliason
?
Irena Sendler
Irena Sendler
guest83bc92
?
闯补惫补プログラマのための顽张らない骋辞入门
闯补惫补プログラマのための顽张らない骋辞入门
yy yank
?
VMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VM
yy yank
?
闯惫尘言语と闯补惫补、切っても切れないその関係
闯惫尘言语と闯补惫补、切っても切れないその関係
yy yank
?
碍耻谤辞尘辞箩颈を碍辞迟濒颈苍て?动かす
碍耻谤辞尘辞箩颈を碍辞迟濒颈苍て?动かす
yy yank
?
Doma2 with Kotlin
Doma2 with Kotlin
yy yank
?
碍辞迟濒颈苍こんなん出ましたけと?
碍辞迟濒颈苍こんなん出ましたけと?
yy yank
?
碍辞迟濒颈苍あるある言いたい
碍辞迟濒颈苍あるある言いたい
yy yank
?
【こっそり始める】闯补惫补フ?ロク?ラマコーテ?ィンク?マイク?レーション
【こっそり始める】闯补惫补フ?ロク?ラマコーテ?ィンク?マイク?レーション
yy yank
?
Kotlinメシ?ャーver リリースを前に
Kotlinメシ?ャーver リリースを前に
yy yank
?
Server Side Kotlin
Server Side Kotlin
yy yank
?

More Related Content

Viewers also liked (11)

Местная и региональная авиация
Местная и региональная авиация
Сергей Абдыкеров
?
Django introduction
Django introduction
Valeria Leonardi
?
??????????????? ??????????????? ?????????
??????????????? ??????????????? ?????????
Matumit Sombunjaroen
?
Cyclopark website re-launch
Cyclopark website re-launch
Cyclopark Kent
?
Marketing plan
Marketing plan
Prasanna Niyadagala
?
Zelula amak-zuzenketak.ppt
Zelula amak-zuzenketak.ppt
burlau voy
?
Day 4 Recap at #CannesLions 2013 / #OgilvyCannes
Day 4 Recap at #CannesLions 2013 / #OgilvyCannes
Ogilvy
?
Economia
victoria vidal
?
Comportamiento de compra del consumidor
setmonasos
?
Rocking SEO for WP - #WCLV2015
Rocking SEO for WP - #WCLV2015
Kenny Eliason
?
Irena Sendler
Irena Sendler
guest83bc92
?
??????????????? ??????????????? ?????????
??????????????? ??????????????? ?????????
Matumit Sombunjaroen
?
Cyclopark website re-launch
Cyclopark website re-launch
Cyclopark Kent
?
Zelula amak-zuzenketak.ppt
Zelula amak-zuzenketak.ppt
burlau voy
?
Day 4 Recap at #CannesLions 2013 / #OgilvyCannes
Day 4 Recap at #CannesLions 2013 / #OgilvyCannes
Ogilvy
?
Comportamiento de compra del consumidor
setmonasos
?
Rocking SEO for WP - #WCLV2015
Rocking SEO for WP - #WCLV2015
Kenny Eliason
?

More from yy yank (10)

闯补惫补プログラマのための顽张らない骋辞入门
闯补惫补プログラマのための顽张らない骋辞入门
yy yank
?
VMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VM
yy yank
?
闯惫尘言语と闯补惫补、切っても切れないその関係
闯惫尘言语と闯补惫补、切っても切れないその関係
yy yank
?
碍耻谤辞尘辞箩颈を碍辞迟濒颈苍て?动かす
碍耻谤辞尘辞箩颈を碍辞迟濒颈苍て?动かす
yy yank
?
Doma2 with Kotlin
Doma2 with Kotlin
yy yank
?
碍辞迟濒颈苍こんなん出ましたけと?
碍辞迟濒颈苍こんなん出ましたけと?
yy yank
?
碍辞迟濒颈苍あるある言いたい
碍辞迟濒颈苍あるある言いたい
yy yank
?
【こっそり始める】闯补惫补フ?ロク?ラマコーテ?ィンク?マイク?レーション
【こっそり始める】闯补惫补フ?ロク?ラマコーテ?ィンク?マイク?レーション
yy yank
?
Kotlinメシ?ャーver リリースを前に
Kotlinメシ?ャーver リリースを前に
yy yank
?
Server Side Kotlin
Server Side Kotlin
yy yank
?
闯补惫补プログラマのための顽张らない骋辞入门
闯补惫补プログラマのための顽张らない骋辞入门
yy yank
?
VMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VM
yy yank
?
闯惫尘言语と闯补惫补、切っても切れないその関係
闯惫尘言语と闯补惫补、切っても切れないその関係
yy yank
?
碍耻谤辞尘辞箩颈を碍辞迟濒颈苍て?动かす
碍耻谤辞尘辞箩颈を碍辞迟濒颈苍て?动かす
yy yank
?
Doma2 with Kotlin
Doma2 with Kotlin
yy yank
?
碍辞迟濒颈苍こんなん出ましたけと?
碍辞迟濒颈苍こんなん出ましたけと?
yy yank
?
碍辞迟濒颈苍あるある言いたい
碍辞迟濒颈苍あるある言いたい
yy yank
?
【こっそり始める】闯补惫补フ?ロク?ラマコーテ?ィンク?マイク?レーション
【こっそり始める】闯补惫补フ?ロク?ラマコーテ?ィンク?マイク?レーション
yy yank
?
Kotlinメシ?ャーver リリースを前に
Kotlinメシ?ャーver リリースを前に
yy yank
?
Server Side Kotlin
Server Side Kotlin
yy yank
?
Ad

絶対にぬるほ?を出さない