browser engineering 관련

에러 상황들

소혼 2025. 8. 31. 09:16
user@AL02296676 browserengineering-code % python3 browser.py http://localhost:8000/input.html
Traceback (most recent call last):
  File "/Users/user/workspace/project/browserengineering-code/browser.py", line 1000, in <module>
    Browser().new_tab(URL(sys.argv[1]))
    ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
  File "/Users/user/workspace/project/browserengineering-code/browser.py", line 987, in new_tab
    new_tab.load(url)
    ~~~~~~~~~~~~^^^^^
  File "/Users/user/workspace/project/browserengineering-code/browser.py", line 773, in load
    self.document.layout()
    ~~~~~~~~~~~~~~~~~~~~^^
  File "/Users/user/workspace/project/browserengineering-code/browser.py", line 660, in layout
    child.layout()
    ~~~~~~~~~~~~^^
  File "/Users/user/workspace/project/browserengineering-code/browser.py", line 547, in layout
    child.layout()
    ~~~~~~~~~~~~^^
  File "/Users/user/workspace/project/browserengineering-code/browser.py", line 547, in layout
    child.layout()
    ~~~~~~~~~~~~^^
  File "/Users/user/workspace/project/browserengineering-code/browser.py", line 397, in layout
    max_ascent = max([word.font.metrics("ascent")
                      for word in self.children])
ValueError: max() iterable argument is empty

LineLayout에서 이런 에러가 나면 빈 리스트에서 최대값을 찾으려고 하기 때문입니다.

max_ascent = max(
    (word.font.metrics("ascent") for word in self.children),
    default=0
)

max_descent = max(
    (word.font.metrics("descent") for word in self.children),
    default=0
)

와 같이 기본 값을 줘서 해결할 수 있습니다.

반응형