Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

絶対にぬるぽを出さない

2,499 views

Published on

jjug ccc 2016 spring LT資料

Published in: Science
  • Be the first to comment

絶対にぬるぽを出さない

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

×