Problems applying Boolean modifier to mesh using arrayed object to make Colander
The result you have is correct but the subdivision surface modifier doesn't have the geometry to make it look nice.  You could try marking the edges of the holes as creases with SHIFT E.  Then the subdivision surface will know where the edges are.