9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

TL;DR

ソースコードはこちら

はじめに

こんにちは!YomamaBananaです。
今回は皆さんに面白いものを紹介したいと思います。

開発経験のある方よくご存知かと思いますが、PoCや開発をする際にいつも謎のエラーだったら、
動いていたソースコードがライブラリーの更新によって諦めていたりして、イラッとします。

ここで!そういったエラーを面白く表示したらどうでしょうか。

いわゆるCustom Errorということです。

詳しくはこの記事を参照。

手順

1- アスキーアートを作成し、テキストファイルとして保存します。

アスキーアートの生成

otsukare.txt
──────────────────────────────────────────────▓▓█───────────────────────────
────────────────────────────────────────────▒██▒▒█──────────────────────────
───────────────────────────────────────────█▓▓▓░▒▓▓─────────────────────────
─────────────────────────────────────────▒█▓▒█░▒▒▒█─────────────────────────
────────────────────────────────────────▒█▒▒▒█▒▒▒▒▓▒────────────────────────
─────────────────▓▓▒░──────────────────▓█▒▒▒▓██▓▒░▒█────────────────────────
─────────────────█▓▓██▓░──────────────▓█▒▒▒▒████▒▒▒█────────────────────────
─────────────────▓█▓▒▒▓██▓░──────────▒█▒▒▒▒▒██▓█▓░░▓▒───────────────────────
─────────────────▓▒▓▒▒▒▒▒▓█▓░──░▒▒▓▓██▒▒▒▒▒▒█████▒▒▒▓───────────────────────
─────────────────▓░█▒▒▒▒▒▒▒▓▓█▓█▓▓▓▓▒▒▒▒▒▒▒▒██▓██▒░▒█───────────────────────
─────────────────▓░▓█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓████▒▒▒█───────────────────────
─────────────────▓░▓██▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▒▒▒▒▒▒▒▒▒▓██░░░█───────────────────────
─────────────────▓░▓███▒▒▒▒▒▒▒▒▒▒▒▓█▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▒▓▓──────────────────────
─────────────────▒▒▒██▓▒▓█▓▒▒▒▒▒▒▒▓▒▒▒▒▒▒▓▓▓▒▒▒▒▒▒▒▓▒█──────────────────────
──────────────────▓▒█▓▒▒▒▒▓▒▒▒▒▒▒▒▒▒▒▒▓█▓▓▓▓█▓▒▒▒▒▒▒▒▓▒─────────────────────
──────────────────▓▒█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓──────▓█▓▒▒▒▒▒▓█─────────────────────
──────────────────▒▒▓▒▒▒▓▓▓▒▒▒▒▒▒▒▒▒▓▓───░▓▓───█▓▒▒▒▒▒█─────────────────────
───────────────────█▒▒▓▓▓▒▒▓▓▒▒▒▒▒▒▓▓───█████▓──█▓▒▒▒▒▓▒────────────────────
───────────────────▓▓█▒─────▒▓▒▒▒▒▒█───░██████──░█▒▒▒▒▓▓────────────────────
───────────────────▓█▒──▒███─▒▓▒▒▒▒█────██████───▓▒▒▒▒▒▓────────────────────
───────────────────██───█████─█▒▒▒▒█─────███▓────▓▓▒▒▒▒▓────────────────────
───────────────────█▓───█████─▒▓▒▒▒█─────────────█▓▓▓▒▒▓────────────────────
───────────────────█▓───░███──░▓▒▒▒▓█──────────░█▓▒▒▒▓▒▓────────────────────
───────────────────██─────────▒▓▒▒▒▒▓▓──────░▒▓█▓────░▓▓────────────────────
───────────────────▓█░────────█▓██▓▒▒▓█▓▓▓▓██▓▓▒▓▒░░▒▓▒▓────────────────────
───────────────────▒██░──────▓▒███▓▒▒▒▒▓▓▓▓▒▒▒▒▒▒▓▓▓▓▒▓─────────────────────
────────────────────█▓█▓▓▒▒▓█▓▒░██▒▒▓▓█▓▒▒▒▒▒▒▒▒▒▒▒▒▓▓█▒────────────────────
────────────────────▓─░▓▓▓▓▓▒▓▓▓▓▒▓▓▓▒▓▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓────────────────────
────────────────────▒▒▒▓▒▒▒▒▒▒▓█░─░░░─▓▓▒▒▒▒▒▒▒▒▒▒▒▓██▓▒────────────────────
─────────────────────█▓▒▒▒▒▒▒▒▒▓▓─░░░─▓▓▒▒▒▒▒▒▒▒▒▓▓▓▒▒▓▒────────────────────
──────────────────────██▓▓▒▒▒▒▒▒█▒░░░░█▒▒▒▒▒▒▒▒▓█▓▓▒▒▒▒▒────────────────────
─────────────────────░─▒██▓▓▒▒▒▒▒█▓▒▒▓▒▒▒▒▒▒▓███▓▒▒▒▒▒▓▓────────────────────
──────────────────────────░▒▓▓▓▓▒▒▓▓▓▓▓▓████▓▓█▒▒▒▒▒▓▓█░────────────────────
............................................................................
..#######..########..######..##.....##.##....##....###....########..########
.##.....##....##....##....##.##.....##.##...##....##.##...##.....##.##......
.##.....##....##....##.......##.....##.##..##....##...##..##.....##.##......
.##.....##....##.....######..##.....##.#####....##.....##.########..######..
.##.....##....##..........##.##.....##.##..##...#########.##...##...##......
.##.....##....##....##....##.##.....##.##...##..##.....##.##....##..##......
..#######.....##.....######...#######..##....##.##.....##.##.....##.########

癒しだ~~

2- テキストファイルを読み込み、普通にプリントする。

必要に応じてCUSTOMERRORに取り組む。

run.py
#################################
###     ERROR
#################################

class EXPLOSION(Exception):
    def __init__(self):
        with open("messages/explosion.txt", "r", encoding="utf-8") as f:
            explosion = f.read()
        self.message = f"\n\n{explosion}"
        super().__init__(self.message)


class ObamaError(Exception):
    def __init__(self) -> None:
        with open("messages/obama.txt", "r", encoding="utf-8") as f:
            obama = f.read()
        self.message = f"\n\n{obama}"
        super().__init__(self.message)

if True:
    raise EXPLOSION

#################################
###     OTSUKARE
#################################

def otsukare():
    with open("messages/otsukare.txt", "r", encoding="utf-8") as f:
        otsukare = f.read()
    print(otsukare)

otsukare()

#################################
###     ANIMATED
#################################

import os 
from time import sleep

def clearConsole():
    command = 'clear'
    if os.name in ('nt', 'dos'):  # If Machine is running on Windows, use cls
        command = 'cls'
    os.system(command)

def kawaii_goodbye():
    for txt in os.listdir("messages/kawaii"):
        f = open(f"messages/kawaii/{txt}", "r", encoding="utf-8").read()
        sleep(0.2)
        clearConsole()
        print(f)
        

kawaii_goodbye()

出力

オバマエラー

D:\Python\git\Random_Scripts\Custom_Error>python run.py
Traceback (most recent call last):
  File "run.py", line 22, in <module>
    raise ObamaError
__main__.ObamaError:

░░█▀░░░░░░░░░░░▀▀███████░░░░
░░█▌░░░░░░░░░░░░░░░▀██████░░░
░█▌░░░░░░░░░░░░░░░░███████▌░░
░█░░░░░░░░░░░░░░░░░████████░░
▐▌░░░░░░░░░░░░░░░░░▀██████▌░░
░▌▄███▌░░░░▀████▄░░░░▀████▌░░
▐▀▀▄█▄░▌░░░▄██▄▄▄▀░░░░████▄▄░
▐░▀░░═▐░░░░░░══░░▀░░░░▐▀░▄▀▌▌
▐░░░░░▌░░░░░░░░░░░░░░░▀░▀░░▌▌
▐░░░▄▀░░░▀░▌░░░░░░░░░░░░▌█░▌▌
░▌░░▀▀▄▄▀▀▄▌▌░░░░░░░░░░▐░▀▐▐░
░▌░░▌░▄▄▄▄░░░▌░░░░░░░░▐░░▀▐░░
░█░▐▄██████▄░▐░░░░░░░░█▀▄▄▀░░
░▐░▌▌░░░░░░▀▀▄▐░░░░░░█▌░░░░░░
░░█░░▄▀▀▀▀▄░▄═╝▄░░░▄▀░▌░░░░░░
░░░▌▐░░░░░░▌░▀▀░░▄▀░░▐░░░░░░░
░░░▀▄░░░░░░░░░▄▀▀░░░░█░░░░░░░
░░░▄█▄▄▄▄▄▄▄▀▀░░░░░░░▌▌░░░░░░
░░▄▀▌▀▌░░░░░░░░░░░░░▄▀▀▄░░░░░
▄▀░░▌░▀▄░░░░░░░░░░▄▀░░▌░▀▄░░░
░░░░▌█▄▄▀▄░░░░░░▄▀░░░░▌░░░▌▄▄
░░░▄▐██████▄▄░▄▀░░▄▄▄▄▌░░░░▄░
░░▄▌████████▄▄▄███████▌░░░░░▄
░▄▀░██████████████████▌▀▄░░░░
▀░░░█████▀▀░░░▀███████░░░▀▄░░
░░░░▐█▀░░░▐░░░░░▀████▌░░░░▀▄░
░░░░░░▌░░░▐░░░░▐░░▀▀█░░░░░░░▀
░░░░░░▐░░░░▌░░░▐░░░░░▌░░░░░░░
░╔╗║░╔═╗░═╦═░░░░░╔╗░░╔═╗░╦═╗░
░║║║░║░║░░║░░░░░░╠╩╗░╠═╣░║░║░
░║╚╝░╚═╝░░║░░░░░░╚═╝░║░║░╩═╝░

D:\Python\git\Random_Scripts\Custom_Error>

爆発

D:\Python\git\Random_Scripts\Custom_Error>python run.py
Traceback (most recent call last):
  File "run.py", line 22, in <module>
    raise EXPLOSION
__main__.EXPLOSION:

        ███████╗██╗░░██╗██████╗░██╗░░░░░░█████╗░██████╗░███████╗██████╗░██╗
        ██╔════╝╚██╗██╔╝██╔══██╗██║░░░░░██╔══██╗██╔══██╗██╔════╝██╔══██╗██║
        █████╗░░░╚███╔╝░██████╔╝██║░░░░░██║░░██║██║░░██║█████╗░░██║░░██║██║
        ██╔══╝░░░██╔██╗░██╔═══╝░██║░░░░░██║░░██║██║░░██║██╔══╝░░██║░░██║╚═╝
        ███████╗██╔╝╚██╗██║░░░░░███████╗╚█████╔╝██████╔╝███████╗██████╔╝██╗
        ╚══════╝╚═╝░░╚═╝╚═╝░░░░░╚══════╝░╚════╝░╚═════╝░╚══════╝╚═════╝░╚═╝

                               ________________
                          ____/ (  (    )   )  \___
                         /( (  (  )   _    ))  )   )\\
                       ((     (   )(    )  )   (   )  )
                     ((/  ( _(   )   (   _) ) (  () )  )
                    ( (  ( (_)   ((    (   )  .((_ ) .  )_
                   ( (  )    (      (  )    )   ) . ) (   )
                  (  (   (  (   ) (  _  ( _) ).  ) . ) ) ( )
                  ( (  (   ) (  )   (  ))     ) _)(   )  )  )
                 ( (  ( \ ) (    (_  ( ) ( )  )   ) )  )) ( )
                  (  (   (  (   (_ ( ) ( _    )  ) (  )  )   )
                 ( (  ( (  (  )     (_  )  ) )  _)   ) _( ( )
                  ((  (   )(    (     _    )   _) _(_ (  (_ )
                   (_((__(_(__(( ( ( |  ) ) ) )_))__))_)___)
                   ((__)        \\||lll|l||///          \_))
                            (   /(/ (  )  ) )\   )
                          (    ( ( ( | | ) ) )\   )
                           (   /(| / ( )) ) ) )) )
                         (     ( ((((_(|)_)))))     )
                          (      ||\(|(|)|/||     )
                        (        |(||(||)||||        )
                          (     //|/l|||)|\\ \     )
                        (/ / //  /|//||||\\  \ \  \ _)
-------------------------------------------------------------------------------

D:\Python\git\Random_Scripts\Custom_Error>

癒し

D:\Python\git\Random_Scripts\Custom_Error>python run.py


──────────────────────────────────────────────▓▓█───────────────────────────
────────────────────────────────────────────▒██▒▒█──────────────────────────
───────────────────────────────────────────█▓▓▓░▒▓▓─────────────────────────
─────────────────────────────────────────▒█▓▒█░▒▒▒█─────────────────────────
────────────────────────────────────────▒█▒▒▒█▒▒▒▒▓▒────────────────────────
─────────────────▓▓▒░──────────────────▓█▒▒▒▓██▓▒░▒█────────────────────────
─────────────────█▓▓██▓░──────────────▓█▒▒▒▒████▒▒▒█────────────────────────
─────────────────▓█▓▒▒▓██▓░──────────▒█▒▒▒▒▒██▓█▓░░▓▒───────────────────────
─────────────────▓▒▓▒▒▒▒▒▓█▓░──░▒▒▓▓██▒▒▒▒▒▒█████▒▒▒▓───────────────────────
─────────────────▓░█▒▒▒▒▒▒▒▓▓█▓█▓▓▓▓▒▒▒▒▒▒▒▒██▓██▒░▒█───────────────────────
─────────────────▓░▓█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓████▒▒▒█───────────────────────
─────────────────▓░▓██▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓▒▒▒▒▒▒▒▒▒▓██░░░█───────────────────────
─────────────────▓░▓███▒▒▒▒▒▒▒▒▒▒▒▓█▒▒▒▒▒▒▒▒▒▒▒▒▓▓▓▒▓▓──────────────────────
─────────────────▒▒▒██▓▒▓█▓▒▒▒▒▒▒▒▓▒▒▒▒▒▒▓▓▓▒▒▒▒▒▒▒▓▒█──────────────────────
──────────────────▓▒█▓▒▒▒▒▓▒▒▒▒▒▒▒▒▒▒▒▓█▓▓▓▓█▓▒▒▒▒▒▒▒▓▒─────────────────────
──────────────────▓▒█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▓▓──────▓█▓▒▒▒▒▒▓█─────────────────────
──────────────────▒▒▓▒▒▒▓▓▓▒▒▒▒▒▒▒▒▒▓▓───░▓▓───█▓▒▒▒▒▒█─────────────────────
───────────────────█▒▒▓▓▓▒▒▓▓▒▒▒▒▒▒▓▓───█████▓──█▓▒▒▒▒▓▒────────────────────
───────────────────▓▓█▒─────▒▓▒▒▒▒▒█───░██████──░█▒▒▒▒▓▓────────────────────
───────────────────▓█▒──▒███─▒▓▒▒▒▒█────██████───▓▒▒▒▒▒▓────────────────────
───────────────────██───█████─█▒▒▒▒█─────███▓────▓▓▒▒▒▒▓────────────────────
───────────────────█▓───█████─▒▓▒▒▒█─────────────█▓▓▓▒▒▓────────────────────
───────────────────█▓───░███──░▓▒▒▒▓█──────────░█▓▒▒▒▓▒▓────────────────────
───────────────────██─────────▒▓▒▒▒▒▓▓──────░▒▓█▓────░▓▓────────────────────
───────────────────▓█░────────█▓██▓▒▒▓█▓▓▓▓██▓▓▒▓▒░░▒▓▒▓────────────────────
───────────────────▒██░──────▓▒███▓▒▒▒▒▓▓▓▓▒▒▒▒▒▒▓▓▓▓▒▓─────────────────────
────────────────────█▓█▓▓▒▒▓█▓▒░██▒▒▓▓█▓▒▒▒▒▒▒▒▒▒▒▒▒▓▓█▒────────────────────
────────────────────▓─░▓▓▓▓▓▒▓▓▓▓▒▓▓▓▒▓▒▒▒▒▒▒▒▒▒▒▒▓▓▓▓▓▓────────────────────
────────────────────▒▒▒▓▒▒▒▒▒▒▓█░─░░░─▓▓▒▒▒▒▒▒▒▒▒▒▒▓██▓▒────────────────────
─────────────────────█▓▒▒▒▒▒▒▒▒▓▓─░░░─▓▓▒▒▒▒▒▒▒▒▒▓▓▓▒▒▓▒────────────────────
──────────────────────██▓▓▒▒▒▒▒▒█▒░░░░█▒▒▒▒▒▒▒▒▓█▓▓▒▒▒▒▒────────────────────
─────────────────────░─▒██▓▓▒▒▒▒▒█▓▒▒▓▒▒▒▒▒▒▓███▓▒▒▒▒▒▓▓────────────────────
──────────────────────────░▒▓▓▓▓▒▒▓▓▓▓▓▓████▓▓█▒▒▒▒▒▓▓█░────────────────────
............................................................................
..#######..########..######..##.....##.##....##....###....########..########
.##.....##....##....##....##.##.....##.##...##....##.##...##.....##.##......
.##.....##....##....##.......##.....##.##..##....##...##..##.....##.##......
.##.....##....##.....######..##.....##.#####....##.....##.########..######..
.##.....##....##..........##.##.....##.##..##...#########.##...##...##......
.##.....##....##....##....##.##.....##.##...##..##.....##.##....##..##......
..#######.....##.....######...#######..##....##.##.....##.##.....##.########

D:\Python\git\Random_Scripts\Custom_Error>

あとがき

今回は非常にシンプルなものを書いてみたが、すごくドキドキワクワクしました。
やっぱり開発者としてクリエイティブであるべく、小さいなことからでもいいと
思います。

ぜひこれを発展させ、「大阪おじいちゃんエラー」とか「メイドエラー」など、
面白そうなものを書いて、開発をもっと楽しみましょう!

最後に

goodbye.gif

9
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?